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