2014-01-20 39 views
2

这里是我的脚本的简化版本:蟒蛇MySQLdb的:SELECT DISTINCT - 为什么返回长

import MySQLdb 
src_db = MySQLdb.connect(**some_connection) 
src_cursor = src_db.cursor() 
v = src_cursor.execute('SELECT node_id FROM stats WHERE time_unit >= 1388534400') 

v最终被long类型,这是我无法理解的。我希望有一个将返回1元组元组的生成器(我只问一列)。它返回一个很长的值,即从db返回的行数。为什么?

当我尝试来遍历它:

node_ids = {int(x[0]) for x in v} 

我获得以下错误:

TypeError: 'long' object is not iterable 

回答

4

你需要阅读python database API specification, PEP-249

基本上,在用游标对象执行查询后,然后查询游标对象的结果。

cursor.execute(my_sql) 

for record in cursor.fetchall(): 
    # do stuff 
+0

此答案提供指向重要资源的链接 - 接受 – ducin

2

src_cursor.execute(SELECT_QUERY)将返回符合查询条件的行数。

要通过查询结果迭代:

for row in src_cursor.fetchall():

要一次得到一行:

row = src_cursor.fetchone()