python MySQLdb:SELECT DISTINCT - 为什么返回long

时间:2014-01-20 23:17:29

标签: python long-integer mysql-python

这是我的脚本的缩短版本:

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元素元组(我只要求一列)。它返回一个long值,即从db返回的行数。为什么呢?

当我尝试迭代它时:

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

我收到以下错误:

TypeError: 'long' object is not iterable

2 个答案:

答案 0 :(得分:4)

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

基本上,在使用游标对象执行查询后,您可以在游标对象中查询结果。

cursor.execute(my_sql)

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

答案 1 :(得分:2)

src_cursor.execute(SELECT_QUERY)将返回与您的查询匹配的行数。

迭代查询结果:

for row in src_cursor.fetchall():

一次获得一行:

row = src_cursor.fetchone()