我目前正在构建一个项目,其中我需要为每个用户保存一个字符串列表(他阅读的文章的网址)。
我正在使用带有sqlite的python烧瓶SQLalchemy。
我知道sqlite不支持数组,所以我正在考虑切换到另一个数据库,而不是sqlite,一个支持数组的数据库。
我想知道你会怎么做?哪个数据库支持数组,或者是否有更好的解决方法。
MySQL和SQLlite都支持JSON列。可以将数组存储在JSON列中。就最佳实践和性能而言,将阵列放入数据库当然是有争议的。
ORM公司
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
list_of_items = Column(JSON, nullabled=False)
将数组添加到您的数据库。
parent_one = Parent(list_of_items=['item1', 'item2'])
session.add(parent_one)
session.commit()
现在,当您获取parent\u one的记录时,您将看到它的“list\u of\u items”列是python中的一个数组。
这也可以通过SQL alchemy核心语言完成。
您可以以某种方式序列化它。一种选择是简单地使用数组调用str
,然后在需要将其转换回来时以某种方式处理它。
另一个选项是使用json模块:
import json
lst = [1,2,3]
serialized = json.dumps(lst)
print(serialized) # '[1, 2, 3]'
print(type(serialized)) # <class 'str'>
deserialized = json.loads(serialized)
print(deserialized) # [1, 2, 3]
print(type(deserialized)) # <class 'list'>
但正如ggorlen的链接所示,您应该尝试想出一个比直接存储阵列更好的选择。
我创建了一个TextView,它以多行显示值 ,我希望将该值保留在SQLite数据库中。这是我使用的代码: 问题是当我保存值时,整个值被插入到一个单元格中。我希望每行的值分开,然后插入到每行的单个单元格中,尽管我使用扫描器方法插入数据,但它不起作用。那有什么办法吗?
问题内容: 我正在开发一个PHP应用程序,该程序需要将各种设置存储在数据库中。客户经常询问是否可以添加或更改/删除某些内容,这已导致表格设计出现问题。基本上,我有很多布尔字段,它们仅指示是否为特定记录启用了各种设置。 为了避免使表格混乱,我考虑将数据存储为序列化数组。我已经读过,这被认为是不好的做法,但是我认为这是使用这种方法的合理案例。 有什么真正的理由避免这样做吗? 任何建议表示赞赏。 谢谢。
问题内容: 在MySQL数据库中用PHP存储IP的最佳实践是什么?有一个名为ip2long的函数-但这仅适用于IPv4。但是IPv6呢? 我知道一个用于IPv6 IP的php函数,但是在Windows上的PHP <Version 5.3上不起作用 问题答案: 可以将点分十进制IPv4地址转换为整数,最大大小为32位。IPv6地址是128位。由于128位不适合PHP int,因此在PHP中使用它会很
我有一个通过ORM保存到数据库的对象。对象有一个字符串数组,每个对象的数组长度可以不同。我想知道在db中存储字符串数组的标准做法(例如,我是否应该将所有字符串存储在一个字段中作为csv等)?
问题内容: 我想保存额外的信息,然后再将总订单发送到Paypal。对于每一项,我都在MySQL数据库中创建了一个要存储的列。现在,我正在考虑将其保存为一个数组,以后可以在创建PHP页面时阅读。多余的字段取自输入表单字段。 通过使用数组,可以确保不混淆信息吗? 问题答案: 您可以使用/ 存储数组。使用该解决方案,它们不能轻易地从其他编程语言中使用,因此您可以考虑使用/ 代替(它为您提供了广泛支持的格
问题内容: 我正在尝试将sql数据库中的数据存储到数组中。目前我有这个: 问题是我有8行数据。我需要将数据库中的每个8个名称存储到一个数组中。当我尝试这个: 它不起作用。 问题答案: 您想要的是: 这会将所有8个名称存储在类似于以下内容的数组中: