2010-07-28 82 views
1

我遇到了一個有趣的問題。我有一個MySQL數據庫,其中包含一些非常精確的十進制值(例如,0.00895406607247756,17位小數)的雙打。這是科學數據,所以這個高水平的精度非常重要。Python MySQLdb光標截斷值

我使用MySQLdb的Python中選擇數據庫中的數據:

cursor.execute("SELECT * FROM " ...etc...) 

for n in range(cursor.rowcount): 
    row = cursor.fetchone() 
    print row 

出於某種原因,當它到達我的非常精確的小數點,他們已經被截斷爲最多14位小數。 (即前面的小數變成0.00895406607248)

有什麼辦法從原始形式的MySQLdb中獲取數據而不截斷嗎?

+0

你可以做'行中的遊標:print(row)',你知道嗎? – SilentGhost 2010-07-28 17:11:05

+0

謝謝。我知道;我不是真的只是打印行,我正在做其他事情的價值觀。這只是我如何獲取數據的一個例子。 – 2010-07-28 17:27:11

回答

3

你用什麼MySQL數據類型來存儲數據?是DECIMAL(18,17)DECIMAL s最多爲65 digits of precision

如果您將MySQL數據類型設置爲使用DECIMAL(...),那麼MySQLdb會將數據轉換爲Python decimal.Decimal對象,該對象應保持精度。

+0

我正在使用DOUBLE。我會給DECIMAL一個鏡頭。 – 2010-07-28 17:22:44

+0

謝謝!這似乎是訣竅。 – 2010-07-28 17:56:32