You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将MySQL中POINT类型SQL数据转换为Python可识别格式的方法

解决MySQL POINT类型数据转Python可处理格式的问题

嘿,我来帮你搞定这个POINT类型数据转换的事儿!你现在拿到的二进制字节串是MySQL存储POINT类型用的WKB(Well-Known Binary)格式,下面给你几个实用的解决办法:

方法1:在SQL查询时直接转换为可读格式

这是最省心的方式,直接让MySQL把POINT转换成文本或者GeoJSON格式,Python拿到就能直接用。

修改你的查询语句,用ST_AsText()函数:

k = db.cursor()
# 用ST_AsText把POINT转成字符串格式
k.execute("SELECT ST_AsText(location) FROM api_server.Measurement WHERE userid = 18")
rows = k.fetchall()
# 输出会是类似 'POINT(116.397428 39.90923)' 的字符串
print(rows[0][0])

如果需要GeoJSON格式,可以用ST_AsGeoJSON():

k.execute("SELECT ST_AsGeoJSON(location) FROM api_server.Measurement WHERE userid = 18")
rows = k.fetchall()
# 输出是类似 '{"type": "Point", "coordinates": [116.397428, 39.90923]}' 的JSON字符串
import json
point_json = json.loads(rows[0][0])
print(point_json['coordinates'])  # 直接拿到坐标列表

方法2:用Python库解析WKB二进制数据

如果已经拿到了二进制数据(就是你现在输出的b'\x00\x00...'),可以用专门的GIS库来解析,比如shapely:

  1. 先安装库:
pip install shapely
  1. 然后解析二进制数据:
from shapely import wkb

k = db.cursor()
k.execute("SELECT location FROM api_server.Measurement WHERE userid = 18")
rows = k.fetchall()
# 解析WKB数据
point = wkb.loads(rows[0][0])
# 直接获取坐标
print(f"经度:{point.x},纬度:{point.y}")

方法3:手动解析WKB格式(无需额外库)

如果你不想装第三方库,也可以手动解析WKB的结构。MySQL的POINT类型WKB格式规则是:

  • 第1字节:字节序(1=小端,0=大端)
  • 第2-5字节:类型ID(POINT对应1)
  • 第6-13字节:X坐标(双精度浮点数)
  • 第14-21字节:Y坐标(双精度浮点数)

用struct模块来解析:

import struct

k = db.cursor()
k.execute("SELECT location FROM api_server.Measurement WHERE userid = 18")
rows = k.fetchall()
binary_data = rows[0][0]

byte_order = binary_data[0]
if byte_order == 1:
    # 小端序解析
    type_id = struct.unpack('<I', binary_data[1:5])[0]
    x = struct.unpack('<d', binary_data[5:13])[0]
    y = struct.unpack('<d', binary_data[13:21])[0]
else:
    # 大端序解析
    type_id = struct.unpack('>I', binary_data[1:5])[0]
    x = struct.unpack('>d', binary_data[5:13])[0]
    y = struct.unpack('>d', binary_data[13:21])[0]

print(f"坐标:({x}, {y})")

个人推荐方法1或者方法2,简单又不容易出错~

内容的提问来源于stack exchange,提问作者Jipolie01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:58:39