1

如何为一行中的单个列添加多个元素:

假设我有一个专栏,主题,里面可以有无限多的元素:

topics = ['Particle Physics,'Karaoke','jazz']

我在sqlite中有一个声明:

def UpdateElement(new_user,new_topic):
    new_topic = new_topic + "; "
    querycurs.execute('''UPDATE First_Data SET topic = (?) WHERE user = (?)''', (new_topic, new_user))

但是,这将允许主题列下一次只存在一个元素。如何编辑代码以便它可以将另一个给定元素添加到当前主题。

如果在表中 topic = ['Math'],那么我可以将其变成 topic = '[Math; Python']。这样我可以使用简单的 python .join 语句来拆分它。

4

1 回答 1

2

使用文本字段,您可以存储任何内容。您可以将列表存储为分号分隔的字符串或 json 对象字符串。您还可以腌制列表并将其存储为 base64 字符串。所有这些解决方案的问题是您失去了对数据的访问权限。要计算有多少用户喜欢 Jazz 主题,您需要阅读/拆分文本字段……或者使用一些更复杂的 LIKE 语句。

由于您使用的是 SQL,因此您可能需要考虑规范化您的数据以包括一个主题表、一个用户表和一个交叉表,其中包含用户和主题的外键,以强制执行多对多关系。虽然设置起来有点多,但是当用户主题发生变化时更新它会更简单。

于 2013-10-03T05:18:31.353 回答