MySQL-python:SELECT返回'long'而不是查询

DMM*_*MML 2 mysql select mysql-python

我在使用mysql-python已建立的数据库上运行select查询时遇到问题.问题是返回一个数字,即所谓的Pythona 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]
Run Code Online (Sandbox Code Playgroud)

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

错误如下所示:

 TypeError: 'long' object is not iterable
Run Code Online (Sandbox Code Playgroud)

当我有python print result它返回:

('RESULT:', 52L)
Run Code Online (Sandbox Code Playgroud)

当我附上result喜欢str(result)它只是返回的数量52(不long)

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

Chr*_*mer 5

返回值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]
Run Code Online (Sandbox Code Playgroud)