我在使用mysql-python
在已建立的数据库上运行select查询时遇到问题。问题是返回的数字Python
指的是long
,而不是查询的数据 - 应该注意这个数字对应于应该返回的记录数(I登录到数据库并从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
当我有python print result
时,它返回:
('RESULT:', 52L)
如果我将result
括起来str(result)
,则只返回52
号码(不是long
)
非常感谢任何帮助和建议!
答案 0 :(得分:5)
dbc.execute
的返回值不是select的结果;我相信它是结果中的行数。为了获得实际结果,您需要调用其中一个fetch
方法。请参阅文档here。
您应该将代码更新为:
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]