Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在sqlite列中有多个元素_Python_Sqlite - Fatal编程技术网

Python 在sqlite列中有多个元素

Python 在sqlite列中有多个元素,python,sqlite,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 =

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

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

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

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


由于使用SQL,您可能需要考虑将数据归一化以包括主题表、用户表和带有外键的<强>跨表表,以使用户和主题执行多对多关系。虽然它的设置有点复杂,但当用户主题发生变化时,它可以更简单地更新

如果您使用的是SQLite,请让SQLite处理连接。只是一个想法。