我只知道如何输入字符串和数字,但有没有办法输入列表?基本上,我有一个字典,每个密钥都被放入数据库。每个键的值是一个列表,我也想在数据库中使用它。
答案 0 :(得分:1)
SQLite3没有数组数据类型。 (见Datatypes in SQLite version 3)
但是,您可以序列化以将其插入sqlite3表。
例如,您可以将列表转换为json字符串,并使用该字符串插入表中。 (json.dumps
)
cursor.execute('INSERT INTO a_table (..., a_list_field) values (..., ?)',
[..., json.dumps(a_list_object)])
当您选择它时,通过加载json字符串将其转换回列表。 (json.loads
)
答案 1 :(得分:0)
使用sqlite3,我能够执行此脚本,删除数据库并使用名为data
的列表使用新数据重写数据库。这可能会也可能不会回答您的具体问题:
from views import db
from config import DATABASE_PATH
import sqlite3
from datetime import datetime
with sqlite3.connect(DATABASE_PATH) as connection:
c = connection.cursor()
c.execute("""ALTER TABLE tasks RENAME TO old_tasks""")
db.create_all()
c.execute("""SELECT name, due_date, priority,
status FROM old_tasks ORDER BY task_id ASC""")
data = [(row[0], row[1], row[2], row[3],
datetime.now(), 1) for row in c.fetchall()]
c.executemany("""INSERT INTO tasks (name, due_date, priority, status,
posted_date, user_id) VALUES (?, ?, ?, ?, ?, ?)""", data)
c.execute("DROP TABLE old_tasks")
执行上述脚本后,data
会接收 4 子列表,并使用其中的数据创建新数据库。
希望我帮忙!