0

我是 Python 的半新手,需要一些帮助。谷歌搜索没有发现太多。我在 python3 中使用 pymysql。我可以连接和查询我的数据库。当我尝试获取表中的所有行并遍历它们时,我得到了 erro TypeError: 'int' does not support the buffer interface

query = conn.cursor()
query.execute("SELECT * FROM wp_options")
for row in query:
    print(row)
query.close()

该表包含字符串和整数。理想情况下,我想遍历每一行并搜索一个值,但现在我什至无法获得该行。看起来异常是从struct.unpackin抛出的unpack_int24。任何帮助将不胜感激

编辑

在解决了一些问题后,我发现一列是longtext. 其他每个都可以正常使用此代码。如果我尝试从长文本字段中获取所有行,那么它会出错。为什么mysql中的Longtext会导致python错误?

4

2 回答 2

1

我相信您需要rows = query.fetchall()在查询对象上使用(或 fetchone() 或 fecthmany(n))(在执行查询之后)以返回您现在将对其进行迭代的行:

query = conn.cursor()
query.execute("SELECT * FROM wp_options")
rows = query.fetchall()
for row in rows:
    print(row)
query.close()
于 2012-09-20T18:30:58.737 回答
0

这是我找到的答案。当我尝试查询longtext包含大量数据的列的记录时,问题就出现了。问题是我正在使用的 mysql 适配器的一部分pymysql

看起来在 Python3 中 unpack_24、unpack_32、unpack_64 都失败了,因为它们得到的是字节而不是像 python2 这样的字符串。长数据抛出错误,没有异常处理。在这里找到了解决方案http://code.google.com/p/pymysql/issues/detail?id=55

于 2012-09-21T19:05:08.373 回答