首页 > 解决方案 > Python mysql-connector 将数字 TEXT 值转换为整数

问题描述

我对 mysql 进行了成功的 SELECT 请求,但一行是一个数字,但 python 将其转换为整数,结果是从一开始就删除了零。但我希望零不会从一开始就被删除。有没有办法做到这一点?

我的代码

sql = mysql.connector.connect(user='XXX', password='XXX',
                            host='localhost',
                            database='database'
                            )
cursor = sql.cursor()
cursor = sql.cursor(dictionary=True)
cursor.execute("SELECT * FROM database WHERE language='de' AND searchnumber='0290661' ")
myresult = cursor.fetchall()

for row in myresult: searchnumber = row['searchnumber'] # searchnumber = str(row['searchnumber']) has no effect

print(searchnumber) # 返回 290661 但应该是 0290661

标签: pythonmysqlmysql-connector-python

解决方案


我经历过类似的事情;来自 TEXT 列的数据在 Python 中被间歇性地解释为数值。在我的情况下,文本是一个 12 位的十六进制值,当十六进制值具有以下形式时出现问题:

   XXXXXXXeXXXX

在哪里:

  • X = 十进制数字 0-9
  • e = 字面上的 'e' 字符

在这种情况下,连接器似乎将其解释为带有指数的整数。不用说,这(通常)会产生一个解释为“Inf”的数字溢出,它没有得到想要的结果。

今天我发现了对 Python 的 MySQL 连接器的一个可能相关的更改。以下是发布说明的链接,其中描述了似乎相关的修复。

https://dev.mysql.com/doc/relnotes/connector-python/en/news-8-0-21.html

请尝试这个并与小组分享您的经验...


推荐阅读