Python使用psycopg2读取PostgreSQL的geometry字段出现二进制乱码

1、问题

读取geometry字段出现二进制乱码

查询语句:

sql 复制代码
sql = "select * from public"

Note:

这种写法在PostgreSQL中直接查询, 没有问题,不会报错。
但是在Python中查询,如果导出的geom还是一长串的geometry 格式的话, POINT、LineString等矢量数据会显示为二进制或者字符串。

2 解决办法

如果想要达到MySQL中的查询效果,需要对POINT等矢量数据加上ST_ASTEXT:将几何数据转换成可读的文本类型。得到的是有多个经纬度的,是POLYGON。正确的查询语句:

sql 复制代码
sql = "select st_astext(geom) from public"

3 插入geometry字段

想要把ST_ASTEXT 读出来的数据又存回到数据库表的geometry数据类型的字段时,我们需要使用ST_GeomFromText,:根据字符串构建几何。

sql 复制代码
sql = """INSERT INTO lane(lane_id, link_id, phase_id, width, length, max_speed, geom) VALUES (%s, %s, %s, %s, %s, %s, ST_GeomFromText(%s))"""
        my_pg.sql_insert(sql, lane)
相关推荐
夕阳之后的黑夜3 小时前
Python脚本:为PDF批量添加水印
开发语言·python·pdf
2401_841495643 小时前
【LeetCode刷题】LRU缓存
数据结构·python·算法·leetcode·缓存·lru缓存·查找
女王大人万岁3 小时前
Go标准库 path 详解
服务器·开发语言·后端·golang
2401_841495643 小时前
【数据挖掘】Apriori算法
python·算法·数据挖掘·数据集·关联规则挖掘·关联规则·频繁项集挖掘
棒棒的皮皮3 小时前
【OpenCV】Python图像处理之查找并绘制轮廓
图像处理·python·opencv·计算机视觉
无名修道院3 小时前
AI大模型应用开发-用 MySQL 存储简单数据,用 Python 操作数据库
数据库·python·mysql·ai大模型应用开发
一路往蓝-Anbo3 小时前
第 2 篇:单例模式 (Singleton) 与 懒汉式硬件初始化
开发语言·数据结构·stm32·单片机·嵌入式硬件·链表·单例模式
321.。3 小时前
从 0 到 1 实现 Linux 下的线程安全阻塞队列:基于 RAII 与条件变量
linux·开发语言·c++·学习·中间件
疯狂的喵3 小时前
实时信号处理库
开发语言·c++·算法
程序员清洒3 小时前
Flutter for OpenHarmony:Stack 与 Positioned — 层叠布局
开发语言·flutter·华为·鸿蒙