2016-07-02 85 views
1

我只知道如何輸入字符串和數字,但有沒有辦法輸入列表?基本上,我有一本詞典,每個鍵都被放入數據庫。每個鍵的值都是一個列表,我也希望這個在數據庫中。如何在sqlite3數據庫中插入一個列表

+1

是否要將列表作爲一個條目或表格輸入?如果它是一個表格,則使用重複的插入或塊插入。請參閱https://www.sqlite.org/lang_insert.html - 查看VALUES部分的語法 – cup

回答

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

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發生在子列表並從他們使用的數據來創建一個新的數據庫。

希望我幫了忙!

相關問題