2016-07-02 13 views
1

Ich kann nur Strings und Zahlen eingeben, aber gibt es eine Möglichkeit, eine Liste einzugeben? Grundsätzlich habe ich ein Wörterbuch und jeder Schlüssel wird in die Datenbank eingegeben. Der Wert für jeden Schlüssel ist eine Liste und ich möchte dies auch in der Datenbank.Wie füge ich eine Liste in eine sqlite3-Datenbank ein?

+1

Möchten Sie die Liste als einen Eintrag oder als Tabelle eingeben? Wenn es sich um eine Tabelle handelt, verwenden Sie entweder wiederholte Einsätze oder einen Blockeinsatz. Siehe https://www.sqlite.org/lang_insert.html - werfen Sie einen Blick auf die Syntax des VALUES-Teils – cup

Antwort

1

SQLite3 hat keinen Array-Datentyp. (Siehe Datatypes in SQLite version 3)

Aber Sie können serialisieren, um es in sqlite3 Tabelle einzufügen.

Beispielsweise können Sie die Liste in JSON-Zeichenfolge konvertieren und die Zeichenfolge in die Tabelle einfügen. (json.dumps)

cursor.execute('INSERT INTO a_table (..., a_list_field) values (..., ?)', 
       [..., json.dumps(a_list_object)]) 

Wenn Sie es auswählen, konvertiert sie zurück zur Liste von JSON-String zu laden.()

0

Mit sqlite3 konnte ich dieses Skript ausführen, das eine Datenbank löscht und sie mit neuen Daten unter Verwendung einer Liste mit dem Namen data umschreibt. Dies kann oder möglicherweise nicht Ihre Frage beantworten:

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") 

Wenn das obige Skript ausgeführt wird, data in Teillisten nimmt und nutzt die Daten von ihnen eine neue Datenbank zu erstellen.

Ich hoffe, ich half!

Verwandte Themen