2016-02-09 57 views
4

我通過mysql連接器連接到mysql數據庫,並運行一個簡單的查詢來提取ID列表。我需要遍歷該列表並將它們傳遞給其他代碼。出於某種原因,我得到了一個元組列表。這是預期的行爲?如果不是,我做錯了什麼? 這裏是我的代碼片段:Python mysql連接器返回元組

import mysql.connector 
conn = mysql.connector.connect(host='127.0.0.1', database='t', user='r', password='pwd') 
cursor = conn.cursor() 
query = ("select id from T where updated < '%s'" % (run_date)) 
cursor.execute(query) 
for row in cursor: 
    print (row) 

cursor.close() 

我正在以下背部(從INT場d/B):

(Decimal('991837'),) 
(Decimal('991838'),) 
(Decimal('991839'),) 
(Decimal('991871'),) 
(Decimal('991879'),) 
(Decimal('991899'),) 
(Decimal('992051'),) 
(Decimal('992299'),) 
(Decimal('992309'),) 

回答

2

是的,這是預期的行爲。將光標用作迭代器基本上等同於使用fetchone()方法對其進行循環。從documentation for fetchone()(重點煤礦):

該方法檢索查詢結果集的下一行,並返回一個 單序列,或無如果沒有更多行可供選擇。默認情況下, 返回的元組由MySQL服務器返回的數據, 轉換爲Python對象。如果光標是原始光標,則不會發生此類轉換;

+0

與我提出的原始問題並不真正相關,但是如何將(Decimal('992309'))轉換爲992309? – epipko

+1

@epipko抓取元組的第一個元素('[0]'),然後得到一個[Decimal對象](https://docs.python.org/2/library/decimal.html#decimal-objects ),如果你需要的話,你可以把它轉換成「int」。 – glibdud