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)
相关推荐
(●—●)橘子……17 分钟前
力扣第503场周赛练习理解
python·学习·算法·leetcode·职场和发展·周赛
爱吃羊的老虎42 分钟前
【JAVA】python转java:Spring Boot 入门
java·spring boot·python
小桥流水---人工智能1 小时前
【已解决】ImportError: cannot import name ‘AdamW‘ from ‘transformers.optimization‘
python
芝麻开门GEO1 小时前
泰安GEO优化服务,真的能提升效果吗?
人工智能·python
颜酱2 小时前
选读:工业级调用 LangChain:从 Demo 到企业级应用
python
颜酱2 小时前
LangChain 调用大模型实战:从跑通到服务商与模型选型
python·langchain
小小de风呀2 小时前
de风——【从零开始学C++】(十一):list的基本使用和模拟实现
开发语言·c++·list
三行数学2 小时前
Matlab之父克利夫·莫勒尔逝世
开发语言·matlab
陌路202 小时前
C++高级进阶--夯实进阶基础(1)
开发语言·c++
唐装鼠3 小时前
Nginx + Gunicorn + Python Web 应用 架构(Claude)
python·nginx·gunicorn