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)
相关推荐
一晌小贪欢42 分钟前
【Python数据分析】数据分析与可视化
开发语言·python·数据分析·数据可视化·数据清洗
草莓火锅2 小时前
用c++使输入的数字各个位上数字反转得到一个新数
开发语言·c++·算法
j_xxx404_2 小时前
C++ STL:阅读list源码|list类模拟|优化构造|优化const迭代器|优化迭代器模板|附源码
开发语言·c++
DreamNotOver2 小时前
批量转换论文正文引用为上标
开发语言·论文上标
散峰而望2 小时前
C/C++输入输出初级(一) (算法竞赛)
c语言·开发语言·c++·算法·github
fie88893 小时前
基于MATLAB的狼群算法实现
开发语言·算法·matlab
gihigo19983 小时前
MATLAB中生成混淆矩阵
开发语言·matlab·矩阵
dreams_dream3 小时前
Flask
后端·python·flask
曾几何时`3 小时前
C++——this指针
开发语言·c++
小冯的编程学习之路3 小时前
【C++】: C++基于微服务的即时通讯系统(1)
开发语言·c++·微服务