mysql - 如何在mysql中存储python列表对象?

时间:2016-05-13 11:10:22

标签: python mysql database list

我正在开发iOS购物应用程序。我使用python来编写我的后端。

至于购物车部分,我想在list对象中存储一堆产品ID。

顺便说一下,我使用SQLAlchemy来处理sql查询。

由于我在数据库设计方面没有太多经验,我想知道将list对象存储到mysql中的最佳方法是什么。

我认为这是一个多关系问题,我想知道我是否需要第三个表,除了CartItem表存储产品' ids和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?

2 个答案:

答案 0 :(得分:0)

我最近使用python / sql炼金术为某人从网站下订单做了一个应用程序。我做的是,创建2个表。一个存储用户订购/订购的商品,另一个包含订单信息,如订购日期,地址,特殊说明,订单号。这是一对多关系。当用户添加他们被置于“进行中”状态的项目时,当他付费时,他们被置于“已完成”状态。这样我就知道他的购物车里面到底是什么,以及已经订购了什么物品。我使用另一张表跟踪所有货件/订单。

webapp已启动并运行here,您必须登录才能测试订购功能。

答案 1 :(得分: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