尝试从MySql获取所有行时获取TypeError

时间:2012-09-20 18:23:56

标签: python mysql python-3.x

我是Python的新手,需要一些帮助。从谷歌搜索没有找到太多。我正在使用python3的pymysql。我可以连接和查询我的数据库。当我尝试获取表中的所有行并循环遍历它时,我得到了错误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.unpack中的unpack_int24引发了异常。任何帮助都会得到很大的帮助

修改

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

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

这是我找到的答案。 当我尝试查询具有大量数据的longtext列的记录时,会出现此问题。问题是我正在使用的pymysql

的mysql适配器的一部分

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

找到了解决方案