2013-08-21 68 views
2

我在建立的數據庫上運行選擇查詢,使用mysql-python時遇到問題。問題在於返回一個數字,Python引用爲long,而不是查詢的數據 - 應該注意,該數字對應於應該返回的記錄數(我登錄到數據庫並運行查詢從MySQL來確認)。MySQL-python:SELECT返回'long'而不是查詢

下面是代碼:

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 

當我有蟒蛇print result返回:

('RESULT:', 52L) 

當我附上result喜歡str(result)它只是返回的數量52(不long

任何幫助和建議,非常感謝!

回答

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] 
+0

嘿感謝採取迴應的時候了!當我執行這個時,它只是打印一個大名單'[u'title,....,u'title]'。有沒有辦法真正獲得這些電影的標題? – DMML

+0

其實!如果我只是執行'dbc.execute(「」「SELECT title FROM example_movie」「」)''使其工作! (與我使用的方法相反)。我會將你的答案標記爲接受!隨意將這一點添加到它。 – DMML

+0

@FortyLashes,不能參數化列名稱,參數變成字符串文字,並且您在輸出中看到它們。 – newtover

相關問題