2017-09-25 122 views
1

我有一個python代碼,通過MySQLdb訪問mysql來運行select語句。然後我用cursor.fetchall()來收集輸出作爲數組,但問題是它在每個輸出像這樣結束打印的L打印結果from cursor.fetchall()

sql = "SELECT data1, data2 FROM table1, table2 ;" 
cursor.execute(sql) 
dataarray = cursor.fetchall() 
print dataarray 

>>> ((75379L, 45708L), ...) 

但在我的表,沒有L的,只是數字。我怎樣才能確保它只是在沒有L的情況下提取和打印數據?我寧願避免在字符串上使用[:-1],因爲它會將我的None值更改爲Non

回答

1

L指示整數類型爲long。在Python 2中,自動使用的值太大,無法用純整數表示。

MySQLdb似乎只是總是返回long S:

雖然MySQL的INTEGER列完美地轉換成一個Python 整數,無符號整數可能溢出,所以這些值轉換 Python的長整數代替。

對這些值調用str()應忽略尾隨'L'

+0

所以,如果我然後用這些值更新我的表,它會更新正確嗎?因爲在75379L將被輸入到一個整數數據類型的列沒有錯誤? –

+0

是的,'int'和'long'是可以互換的。順便說一句,如果你打印一個單獨的值,你不會看到尾隨'L'。你看到它是因爲你正在打印一個容器。 –

+0

我發現文檔令人困惑。你真的可以溢出一個python int,但不是很長,有一些價值嗎?我以爲這種區分早在多年前就已經過去了? – roganjosh