我在使用 MySQL 返回并使用 python 将其输入 Qt 表时遇到很多问题。我使用data=cursor.fetchall()
for data in data:
for i in range(len(data)):
sqlTableWidget.setItem(index,i,QtGui.QTableWidgetItem(data[i]))
index = index +1
最初我会把 str() 放在返回值周围,这对所有事情都有效,除了当我在外语和日期时间上遇到 unicode 问题时。所以现在我不把 str() 和外语插入到表中。但是,现在非字符串存在一些问题
1)我无法插入日期时间。当我执行 type(data[i])
时,它返回 datetime
并且当我尝试使用 data[i] = data[i 将其转换为字符串时].strftime("%Y-%m-%d %H:%M:%S")
它告诉我'tuple'对象不支持项目分配
2)所以我现在只是通过了。现在我尝试显示整数。我愿意
if data[i] == 1:
print data[i]
print type(data[i])
data[i] = str(data[i])
这会导致:
>>1
>>(type 'long')
>>Type Error: 'tuple' object does not support item assignment
此外,如果我尝试这样做
print list(data[i])
它返回:
TypeError: 'long' object is not iterable
此外,
if data[i] is None:
data[i] = 'No data'
sqlTableWidget.setItem(index,i,QtGui.QTableWidgetItem(data[i]))
返回:
QTableWidgetItem(QtableWidgetItem): argument 1 has unexpected type 'NoneType'
我一定错过了一些关于我的返回的根本性的东西。是什么原因造成的?
最佳答案
您无法通过 fetchall 方法更改数据,因为它是元组而不是列表。 最简单的修复方法是:
data = [list(i) for i in cursor.fetchall()]
关于python - MySQL返回的数据类型和python为不同的函数输出不同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210847/