2016-05-13 16 views
0

我正在開發iOS購物應用程序。我用python寫我的後端。mysql - 如何在mysql中存儲python列表對象?

至於購物車的一部分,我想在一個list對象中存儲一堆產品ID。我使用SQLAlchemy來處理sql查詢。

由於我沒有太多的數據庫設計經驗,我不知道什麼是將list對象存儲到mysql中的最佳方式。

我認爲這是一個一對多的關係問題,我想知道我是否需要第三個表除了一個CartItem表來存儲產品的ID和一個Product表來存儲產品的ID?

有人說serialization是一個選擇。什麼是serialization

或者我可以通過逗號分隔列表元素並將其存儲爲string

我提到的一些問題的答案就像

Store list of values (such as interests)

store list of IDs mysql

How to store a dynamic List into MySQL column efficiently?

回答

0

我最近使用python/SQL鍊金術有人從網站下訂單做了一個應用程序。我所做的是創建2個表格。一個存儲用戶訂購/訂購的物品,另一個包含訂單信息,如訂購日期,地址,特殊說明,訂單號。這是一對多的關係。當用戶添加他們處於「進行中」狀態的物品時,當他爲他們付款時,他們被置於「完成」狀態。這樣,我就知道他的購物車裏有什麼東西,什麼東西已經訂購了。我使用另一張表跟蹤所有貨件/訂單。

該webapp已啓動並正在運行here,您將不得不登錄才能測試訂購功能。

0

用逗號分隔的id保存單個字符串是可能的,但我認爲這不是一個乾淨的解決方案。它實際上是一個序列化的例子=將對象轉換爲可以稍後存儲和重構的格式(wikipedia)。尤其是在像這樣簡單的例子,我建議使用第三個表:

我不明白你在表CartItem存儲什麼,但我會使用類似這樣的模式:

TABLE product 
------------- 
id | price | name | ... 
1 | 10 | socks | ... 
2 | 34 | shirt | ... 

TABLE user 
------------- 
id | name | ... 
1 | John | ... 

TABLE user_cart 
------------- 
user_id | product_id | count | ... 
1  | 1   | 5  | ... 
1  | 2   | 1  | ... 

user_cart中的單行用於存儲一個產品/用戶關係。

使用SQLAlchemy您只需撥打電話即可獲取用戶的購物車。 User.cart_items經過一番配置。檢查backref