在sqlite列中有多个元素

时间:2013-10-03 04:31:52

标签: python sqlite

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

假设我有一个专栏,主题可以包含无限多个元素:

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 .join语句来拆分它。

1 个答案:

答案 0 :(得分:2)

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

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