Einfache Handhabung von Listen mit Python + SQLite3

In sqlite3 gibt es keinen Listentyp. Wenn Sie beispielsweise eine Liste von Ganzzahlen speichern möchten, verwenden Sie "str ()", um sie in einer (durch Semikolon) getrennten Zeichenfolge mit "join ()" zu speichern. Sie müssen tun) und int ()`.

Das sqlite3-Modul verfügt über einen Mechanismus, um diese Vorgänge im Voraus zu registrieren und bei Bedarf automatisch auszuführen.

Wenn Sie wissen, dass alle Typen der Listenelemente übereinstimmen, können Sie die Liste nahtlos verarbeiten, indem Sie die Konvertierungsfunktion mit "register_adapter ()" und "register_converter ()" registrieren. ..

Im folgenden Beispiel wird in testtable ein Typ namens "IntList" definiert und "register_adapter ()" und "register_converter ()" werden verwendet, um die Konvertierungsmethode mit dem Python-Datentyp zu registrieren. Detect_types = sqlite3.PARSE_DECLTYPES ist beim Herstellen einer Verbindung erforderlich.

test.py


import sqlite3

CREATE_TABLE = u"""
create table if not exists testtable (
  id      integer primary key,
  intlist IntList
);
"""

IntList = list
sqlite3.register_adapter(IntList, lambda l: ';'.join([str(i) for i in l]))
sqlite3.register_converter("IntList", lambda s: [int(i) for i in s.split(';')])

def main():
    con = sqlite3.connect(":memory:", detect_types = sqlite3.PARSE_DECLTYPES)
    con.row_factory = sqlite3.Row
    con.execute(CREATE_TABLE)

    insert_list = [1,2,3]
    con.execute(u'insert into testtable values(?, ?)', (1, insert_list))
    con.commit()

    cur = con.cursor()
    cur.execute(u'select * from testtable;')
    assert insert_list == cur.fetchone()['intlist']

if __name__ == '__main__':
    main()

Natürlich können "register_adapter ()" und "register_converter ()" auch mit benutzerdefinierten Typen verwendet werden. Referenz: http://docs.python.jp/2/library/sqlite3.html#id6

Recommended Posts

Einfache Handhabung von Listen mit Python + SQLite3
Versuch, SQLite3 mit Python zu handhaben [Hinweis]
Behandle Excel mit Python
Behandle Rabbimq mit Python
Machen Sie einfach einen Piepton mit Python
Mit Python mit Kelch ganz einfach ohne Server
[Tipps] Behandle Athena mit Python
[Python] [SQLite3] Betreiben Sie SQLite mit Python (Basic)
Implementieren Sie einfach Unterbefehle mit Python-Klick
Behandeln Sie Excel-CSV-Dateien mit Python
Mit Python 3 einfach auf Twitter posten
Fügen Sie Protokollpuffer mit Python in SQLite ein
Speichern / Laden Sie die In-Memory-Datenbank mit pythons sqlite3
Verarbeiten Sie mehrere Listen mit for in Python
Laden Sie einfach mp3 / mp4 mit Python und youtube-dl herunter!
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
SQLite in Python
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Ich habe Hunderte Millionen SQLite mit Python ausprobiert
Sie können auch mit Python problemlos eine GUI erstellen
Behandeln Sie Zip-Dateien mit japanischen Dateinamen in Python 3
[Rust / Python] Behandle Numpy mit PyO3 (Version August 2020)
Erste Schritte mit AWS IoT in Python
Erstellen Sie einfach eine Python-Konsolenanwendung mit Click
[Python] Umgang mit japanischen Zeichen mit openCV
Wie man mit dem Datum / Uhrzeit-Typ in Pythons SQLite3 umgeht
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python