Python mysql-connector 将一些字符串转成bytearray

标签 python mysql sql pandas mysql-connector-python

我正在使用 python3 和 pandas 连接到一些 sql 数据库:

import pandas as pd
import mysql.connector

cnx = mysql.connector.connect(user='me', password='***',
                          host='***',
                          database='***')
df=pd.read_sql("select id as uid,refType from user where registrationTime>=1451606400",con=cnx)
cnx.close()

我得到 2 列:id 和 refType,它们都是字符串类型(SQL 术语中的 varchar)。但是,出于某种原因,refType 列被正确导入为字符串,但 uid 列被导入为 bytearray。 这是他们的样子:

df.head()
                                             uid  

0 [49, 54, 54, 57, 55, 54, 50, 55, 64, 97, 110]
1 [49, 54, 54, 57, 55, 54, 50, 56, 64, 105, 111]
2 [49, 48, 49, 53, 51, 50, 51, 50, 57, 53, 57, 5...
3 [57, 53, 52, 52, 56, 57, 56, 56, 49, 50, 57, 5...
4 [49, 54, 54, 57, 55, 54, 50, 57, 64, 105, 111]

                                         refType  

0 adx_Facebook.IE_an_ph_u8_-.cc-ch.g-f.au-ret7.c...
1 adx_Facebook.IE_io_ph_u4_-.cc-gb.g-f.au-toppay...
2 ad_nan_1845589538__CAbroadEOScys_-.cc-ca.g-f.a...
3 ad_offerTrialPay-DKlvl10-1009
4 adx_Facebook.IE_io_ph_u4_-.cc-us.g-f.au-topspe...

uid 列应该是这样的:

[i.decode() for i in df['uid'][1:5]]

['16697628@io', '10153232959751867@fb', '954489881295911@fb', '16697629@io']

我不明白为什么要转换成bytearray,也不明白如何选择将它转换成string。我在互联网或 Pandas 文档中找不到任何关于它或类似问题的信息。当然,我总是可以在导入后将该列转换为字符串,但这不是首选,因为所示的 sql 查询只是一个示例,在实际表中可能有数百列会被错误地导入为字节数组。手动查找这些列并将其转换为字符串真的很痛苦

连接器本身输出相同的字节数组:

cursor = cnx.cursor()
cursor.execute('select id as uid,refType from user where registrationTime>=1451606400 LIMIT 1')
cursor.fetchall()`

[(bytearray(b'16697627@an'), 'adx_Facebook.IE_an_ph_u8_-.cc-ch.g-f.au-ret7.cr-cys.dt-all.csd-291215.-')

SQL数据库中列的数据类型第一列(uid)为“Varchar(32)”,第二列(refType)为“Varchar(128)”

最佳答案

包“mysql-connector”也有同样的问题。安装“mysql-connector-python”反而对我有用。

pip install mysql-connector-python

关于Python mysql-connector 将一些字符串转成bytearray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34944952/

相关文章:

python - 跟踪文件上的列过滤

python - matplotlib动画控制各个循环中的间隔

mysql - 如何将远程数据库与本地codeigniter一起使用?

mysql - 为什么用mySQL在 "USING BTREE"中出现了一个 "CREATE TABLE"?

sql - 使用连接表选择属于另外两个的行

sql - 查询分层查询

Python-UnboundLocalError : local variable 'obj' referenced before assignment

python - 将 numpy 数组附加到多索引数据帧

php - 一页显示多个 COUNT(*)

php - 使用 id 数组更新和删除多行