2012-09-20 60 views
0

得到所有行,當我半新Python和需要一些幫助。沒有發現從谷歌搜索很多。我用python3使用pymysql。我可以連接並查詢我的數據庫。當我嘗試獲取表中的所有行並循環播放它時,我收到了錯誤TypeError: 'int' does not support the buffer interface獲取類型錯誤試圖從MySQL

query = conn.cursor() 
query.execute("SELECT * FROM wp_options") 
for row in query: 
    print(row) 
query.close() 

該表包含字符串和整數。理想情況下,我想遍歷每一行並搜索一個值,但現在我甚至無法獲得該行。貌似異常是從struct.unpackunpack_int24被拋出。任何幫助將大大apprecaited

編輯

後一些解決問題的我發現,一列是longtext。其他人可以使用此代碼正常工作。如果我試圖從longtext中獲得所有行,那麼它會出錯。爲什麼mysql中的Longtext導致python錯誤?

+0

能得到的代碼中使用工作' 「SELECT CAST(請將option_value AS CHAR(255))FROM wp_options」'仍然好奇,爲什麼LONGTEXT導致錯誤。 –

+0

我認爲這只是工作因爲它限制了字符的數量。 –

回答

1

我相信你需要查詢對象使用rows = query.fetchall()(或fetchone()或fecthmany(N))(執行查詢後)返回行的,你現在會遍歷:

query = conn.cursor() 
query.execute("SELECT * FROM wp_options") 
rows = query.fetchall() 
for row in rows: 
    print(row) 
query.close() 
+0

試過這個建議。仍然收到錯誤。似乎它是執行函數,因爲如果我只是執行並沒有循環,我仍然得到它的錯誤。 –

+0

您確定光標對象成功形成嗎?你確定wp_options是你數據庫中的有效表名嗎? – Harel

+0

表是有效的,因爲在它之前的功能我拉場出表,並工作正常。似乎是罰款單場而與可以包含整數和可疑交易報告 –

0

這裏的我發現的答案。 問題被引起的,當我試圖查詢與大量的數據有一個longtext列記錄。這個問題是我正在使用的mysql適配器的一部分pymysql

看起來像在Python3中unpack_24,unpack_32,unpack_64都失敗了,因爲它們獲取字節而不是像python2那樣的字符串。長數據會引發錯誤,並且沒有異常處理。解決方案就是在這裏發現http://code.google.com/p/pymysql/issues/detail?id=55