我正在开发一个iOS应用程序,我使用Flask(一个Python框架)来构建我的后端。
我将数据存储在mysql
数据库中。
现在我需要在一个属性中存储一堆ID。
首先,我将存储ID的数组转换为JSON
格式对象。
然后我遇到了一个问题。 如何存储此对象?
由于对象的长度可能相当大(我无法确定我存储了多少个ID),而SQLAlchemy
要求属性具有完全长度,因为我创建了表,那么如何确定属性的长度?
答案 0 :(得分:3)
你应该看一下新的JSON type。
您可以通过sqlalchemy的type.JSON使用此MySQL功能。这将大大简化列数据管理。
data_table = Table('data_table', metadata,
Column('id', Integer, primary_key=True),
Column('loosely_related_ids', JSON)
)
with engine.connect() as conn:
conn.execute(
data_table.insert(),
loosely_related_ids = [1, 54, 56, 99, 104]
)
稍后访问loosely_related_ids字段将返回您正常访问的python数组。
您应该使用TEXT字段或类似类型的包装器。
SQLAlchemy提供PickleType field,它在BLOB字段之上实现,并将为您处理数组的pickle和unpickling。请记住,酸洗python对象的所有注意事项以及在解释器之间共享它们仍然适用于此。
答案 1 :(得分:1)
我不清楚你遇到的情况,但是不建议在一列中存储多个记录,在ID owner
和ID
之间构建关系图更加规范化。
例如,您可以创建一个名为“ID”的新表,其架构如下:
id int auto increment ,
idbla varchar(<Your ID Length>)
owner int not null
当您尝试获取某个用户idbla
的所有x
时,您可以使用
SELECT * idbla from IDs where owner = x
您可以使用nosql
(非关系数据库)存储您的数据,它的文档非常适合您的情况。