2

我在使用mysql-python, 在已建立的数据库上运行选择查询时遇到问题。问题是返回一个数字,Python称为 a long,而不是查询的数据 - 应该注意,这个数字对应于应该返回的记录数(我登录到数据库并运行查询从MySQL到确保)。

这是代码:

db = MySQLdb.connect(db = 'testdb', user='testuser', passwd='test', host='localhost', charset='utf8', use_unicode=True)
dbc = db.cursor()
result = dbc.execute("""SELECT %s FROM example_movie""", ('title',))
urls = [row[0] for row in result]

最后一点代码urls = [row[0] for row in result]是将所有内容放入列表中。

错误如下所示:

 TypeError: 'long' object is not iterable

当我有 pythonprint result它返回:

('RESULT:', 52L)

result当我附上str(result)它时,它只返回数字52(不是long

非常感谢任何帮助和建议!

4

1 回答 1

5

from的返回值dbc.execute不是select的结果;我相信这是结果中的行数。为了获得实际结果,您需要调用其中一种fetch方法。请参阅此处的文档。

您应该更新您的代码以阅读:

db = MySQLdb.connect(db = 'testdb', user='testuser', passwd='test', host='localhost', charset='utf8', use_unicode=True)
dbc = db.cursor()
row_count = dbc.execute("""SELECT title FROM example_movie""")
results = dbc.fetchall()
urls = [row[0] for row in result]
于 2013-08-22T16:32:58.760 回答