将Python列表保存到SQLite中

4 投票
3 回答
9834 浏览
提问于 2025-04-18 16:09

我想把一个列表,比如说 mylist = [196, 107, 207, 180, 等等],存到SQLite的表里。这个列表里全是整数,我想保持它原样。这样做可以吗?我试过用这个命令:''' insert into table(field) value(?)''' , (mylist)。但是总是收到错误信息。

3 个回答

1

另一种方法是使用内置的 json 模块把列表转换成一个 json 字符串。

to_dump = [1,2,3,4]
sql_as_text = json.dumps(to_dump)

(把 "sql_as_text" 变量作为文本写入你的数据库)

当你想要再次使用这些数据时,只需反向操作即可。

to_dump = json.loads(sql_as_text)

这种方法同样适用于 Python 字典。

2

在保存的时候,可以用 str() 把列表转换成字符串。然后在加载的时候,用 eval() 把它转换回列表。

你可以试试看:

x = [1, 2]
print(type(x))
y = str(x)
print(type(y))
z = eval(y)
print(type(z))
print(x)
print(y)
print(z)
2

你不能把一堆东西(比如整数)直接放在表格的一列里。你可以选择用其他数据库,比如MongoDB,这样你就可以存储一个“文档”,就像这样:

{'my_list': [196, 107, 207, 180, 等等]}

或者你可以设计一个不同的表结构,像下面这样有几个列(ID, list_id, list_member)。这样的话,你的每个列表成员都会有一行新的记录。如果你还有其他的列表,可以用同一个表,只需要不同的list_id就行了。

要获取你列表里的项目,可以这样写:
SELECT list_member FROM 'table_name' WHERE list_id is 1

ID     list_id        list_member
 1       1                  196
 2       1                  107
 3       1                  207
 4       1                  180
 5       1                  etc
 6       2                  123
 7       2                  etc

这里还有一个更详细的答案 如何在数据库表的一列中存储列表

撰写回答