如何在sqlite3数据库中插入列表

时间:2016-07-02 05:03:44

标签: python sqlite

我只知道如何输入字符串和数字,但有没有办法输入列表?基本上,我有一个字典,每个密钥都被放入数据库。每个键的值是一个列表,我也想在数据库中使用它。

2 个答案:

答案 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 子列表,并使用其中的数据创建新数据库。

希望我帮忙!