python - MySQL返回的数据类型和python为不同的函数输出不同的类型

标签 python mysql qt pyqt mysql-python

我在使用 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/

相关文章:

MySQL:错误 1142 (42000) 和错误 1064 (42000)

c++ - 我们怎样才能使 QTableWidget 可以从多个线程访问,并将 QPushButtons 放在另一个线程的单元格中。?

来自 "PBKDF2WithHmacSHA512"的 java 散列不同于 python CRYPT(digest_alg ='pbkdf2(1000,20,sha512)' , salt=True)(password)[0])

python - KafkaRecord 不能转换为 [B

php - 使用 WHERE 或 PHP 从 MySQL 过滤数据?

python - 在嵌入 matplotlib Canvas 的 Qt4 应用程序中连接鼠标事件

c++ - Qt foreach 循环排序与 QList 的 for 循环

python - 将 Excel 格式化为 DataFrame

python - Tensorflow:在同一操作中共享两个不同变量的值

mysql - 奇怪的错误 1452 (23000) : Cannot add or update a child row: a foreign key constraint fails