2014-01-20 100 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()