0
我從與主鍵許多表舊的數據庫遷移數據等被定義:Django的DecimalField查找與MySQL不工作
`id` decimal(26,0)
id列將包含看起來像值:
20080313154354198004
20081217165552136057
2008080416222952067
20060510151423191000
20060510151423191000
20070710143455874025
200806239353171091
做查詢:
Release.objects.raw("SELECT id from games_release where legacy_id = 2008050812286746069")
有時會成功,有時失敗。在失敗的情況下,我可以從db.connection.queries中捕獲查詢,將其粘貼到MySQL控制檯中,查詢將成功。我想象的是DECIMAL類型是如何在堆棧的不同層次上處理的(ORM - > DB driver - > server)。這似乎是有關,但我還沒有與任何CAST運氣()爲止:
http://dev.mysql.com/doc/refman/5.1/en/type-conversion.html
上使查詢任何幫助的可靠工作大加讚賞。
編輯 其中的一塊拼圖我忘了提:我試圖對存儲在原先從舊錶拉到一個表查詢的十進制值。例如:
class OldModel(db.models):
id = models.DecimalField(decimal_places=0, max_digits=36)
class NewModel(db.models):
id = models.DecimalField(decimal_places=0, max_digits=36)
old = <some instance of OldModel>
new = NewModel.objects.create(id=old.id)
然後過了一段時間,試圖通過objects.raw()選擇「new」可能會失敗。
你應該接受你自己的答案,讓其他人知道解決辦法已經找到。 – Mike 2010-07-10 07:15:10
完成,謝謝。 StackOverflow在接受你自己的答案時強加一段等待時間,否則我會盡快完成它:) – 2010-07-12 01:36:08