2015-09-06 32 views
0

(MySQL新手提醒)如何處理期望varchar(255)的MySQL列中的字符串Python列表?

我從字段價格的API調用值收到回來,它們幾乎總是一個字符串,例如

u'price': u'$49.99', 

雖然有時,有兩種價格(前者價格與當前一個),以及API並將它們放在一個Python列表:

u'price': [ 
    u'$9.99', 
    u'$1,099.99' 
], 

隨着我的專欄price定義爲varchar(255),當價格是列表時插入失敗。我不想將這些價格分成兩列。我知道我可以在插入之前使用Python將列表分解爲一個字符串,但是在MySQL中有沒有一種方法可以允許字符串和列表?

+2

哦,男孩不這樣做。告訴我們什麼樣的兩個值對你意味着什麼,並且考慮去十進制(12,2)路線或類似的東西 – Drew

+1

爲什麼你要把價格定義爲一個varchar? – Ashalynd

+1

,因爲Woot4Moo認爲他不需要使用它:) – Drew

回答

2

因此,它似乎是你試圖解決兩個不同的問題。首先我相信你的模式是正確的,只要你將一個值存儲爲一個varchar而不是一個小數(特別是因爲你沒有對它進行計算)。
第二個MySQL使用關係代數,所以值的「列表」的概念沒有意義。將每個存儲爲自己的不同行(元組)並在運行時將它們連接在一起。

不過,我認爲你需要考慮以下方法:

具有以下屬性創建新表:

price_history( 
    price varchar(45), 
    date_changed datetime 
) 

這將使您能夠妥善處理,從回來的API調用你的供應商。我認爲,從可能出現兩種回報的角度來看,API是非確定性的。退貨應該(在我看來)總是作爲一個列表/數組返回,以確保消費者可以隨時處理響應而無需撤銷負擔(但這超出了範圍)

相關問題