如何在pandas.read_sql_query中直接转换VARBINARY为可读格式?
解决VARBINARY字段直接读取为可读格式的两种方法
一、在SQL查询中直接转换(最省心的方式)
不同数据库提供了内置函数,可直接将VARBINARY类型转为十六进制字符串,查询时处理后,读取结果就是可用格式:
- MySQL/MariaDB:使用
HEX()函数SELECT HEX(`key`) AS key_hex FROM xxx - SQL Server:使用
CONVERT()函数(参数2指定十六进制输出)SELECT CONVERT(VARCHAR(MAX), [key], 2) AS key_hex FROM xxx - PostgreSQL:使用
ENCODE()函数指定hex编码SELECT ENCODE("key", 'hex') AS key_hex FROM xxx
二、在pandas读取时指定转换器
如果不想修改SQL语句,可利用read_sql_query的converters参数,直接对目标字段做转换:
import pandas as pd df = pd.read_sql_query( "select `key` from xxx", engine, converters={"key": lambda x: x.tobytes().hex() if x is not None else None} )
该参数会在读取字段时自动执行转换逻辑,无需后续再用apply处理。
内容的提问来源于stack exchange,提问作者meisterkaio
相关产品推荐
相关产品推荐

