【发布时间】:2021-06-23 22:16:19
【问题描述】:
感谢在 Stackoverflow 中分享的所有知识。
我在打印使用 Python3 和 mysql_connector 库从 MySQL 数据库检索的 varbinary 数据时遇到问题。 varbinary 列 (RawTxt) 在 MySQL 中存储为 varbinary,在 Python 中检索时显示为括号 [] 内的数字列表。
我会先投射然后打印吗?我尝试在连接变量中添加“charset='utf8'”参数无济于事。不确定它是否甚至是字符集/编解码器问题。这似乎有点专业,因为我在互联网上找不到太多关于它的信息。
下面是代码,使用 df.head() 打印,然后使用 df.to_csv 发送到 .csv 文件时的样子
代码:
import mysql.connector as mysql
import pandas as pd
dbconn = mysql.connect(
host = '1234.com',
user = 'root',
password = '1234',
database = 'tq_verbatims'
)
dbcursor = dbconn.cursor()
dbcursor.execute("""
SELECT a.RawID, b.RawTxt, c.GibberishOdds, a.cntResp
FROM tq_verbatims.tblRawSpellingsCoded a, tq_verbatims.tblRawSpellings b, tq_verbatims.tblGibberishOdds c
WHERE a.RawID = b.RawID AND b.SanitizedRawID = c.SanitizedRawID;
"""
)
tblRawSpellingCoded = dbcursor.fetchall()
df = pd.DataFrame(tblRawSpellingCoded, columns=dbcursor.column_names)
df.to_csv (r'C:\Users\export_dataframe.csv', index = False, header=True)
df.head()
df.head() 结果:
RawID RawTxt GibberishOdds cntResp
0 116 [40, 85, 78, 75, 78, 79, 87, 78, 41] 0.050513 1
1 237 [46, 46, 46, 46, 46, 46] 2.718280 1
2 284 [46, 78, 79, 84, 32, 83, 85, 82, 69] 0.079919 1
3 585 [51, 32, 77] 2.718280 6
4 658 [51, 77] 2.718280 403
在 .csv 文件中,RawTxt 字段在 .csv 文件输出中显示为 bytearray(b'(UNKOWN)'),其中应该只有文本“UNKNOWN”。这 4 行的 RawTxt 实际数据是 'UNKNOWN', '......', 'NOT SURE', '3 M'
RawID, RawTxt, GibberishOdds, cntResp
116,bytearray(b'(UNKNOWN)'),0.0505134,1
237,bytearray(b'......'),2.71828,1
284,bytearray(b'.NOT SURE'),0.0799194,1
585,bytearray(b'3 M'),2.71828,6
提前致谢。
【问题讨论】:
标签: python dataframe mysql-connector varbinary