Wie man mit dem Datum / Uhrzeit-Typ in Pythons SQLite3 umgeht

Ich werde Ihnen zeigen, wie Sie mit dem Datetime-Typ (Pseudo) mit der Standard-Python-Bibliothek sqlite3 umgehen.

In SQLite3 gibt es keinen sogenannten Datumstyp (Datum / Uhrzeit-Typ). Auf der Python-Seite können Sie SQLite so verhalten, als hätte es einen Datums- / Uhrzeittyp.

Code vorerst

Mit dieser Art von Gefühl

import sqlite3
import datetime

#Öffnen Sie die DB. Aktivieren Sie die Matching-Funktion / Konvertierungsfunktion.
conn = sqlite3.connect(':memory:', 
detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)

# "TIMESTAMP"Verwenden Sie die Konverterfunktion wie für "DATETIME"
sqlite3.dbapi2.converters['DATETIME'] = sqlite3.dbapi2.converters['TIMESTAMP']

#Cursorgenerierung
cur = conn.cursor()

#Erstellen Sie eine Tabelle mit einer Spalte namens datetime
cur.execute("create table mytable(comment text, updated datetime);"

#Geben Sie die Zeichenfolgendarstellung und die Datum / Uhrzeit in die Spalte Datum / Uhrzeit ein.
cur.executemany("insert into mytable(comment, updated) value (?,?)",
        [["text_formated.", "2014-01-02 23:45:00"],
        ["datetime_class.", datetime.datetime(2014,3,4, 12,34,56)]])


ret = cur.execute("select * from mytable;")

for row in ret.fetchall():
  print "'%s'" % row[0], row[1], type(row[1])

##So ↓ gibt die als datetime deklarierte Spalte den datetime-Typ zurück.
# text_formated. 2014-01-02 23:45:00 <type 'datetime.datetime'>
# datetime_class. 2014-03-04 12:34:56 <type 'datetime.datetime'>

Der Datum / Uhrzeit-Typ wird nur in Python angezeigt, und das in der SQLite-Datenbank gespeicherte tatsächliche Datenformat lautet "2014-01-02 23:45:00" oder "2014-03-04 12:34:56". Es sind ** nur Zeichenkettendaten **.

Tatsächlich ist in der Python-Standardbibliothek "sqlite3 / dbapi2.py" eine "Konverterfunktion" vordefiniert, die den SQL-Typnamen "timestamp" in Pythons datetime ändert.

Wie es funktioniert

Dieses automatische Konvertierungsverhalten wird durch Angabe von "detect_types = sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES" aktiviert, wenn "sqlite3.connect ()" ausgeführt wird.

Die Liste der Konverterfunktionen befindet sich also in "sqlite3.dbapi2.converters" Registrieren Sie die Konverterfunktion für den bereits registrierten Typnamen "TIMESTAMP" wie für "DATETIME", z. B. "sqlite3.dbapi2.converters ['DATETIME'] = sqlite3.dbapi2.converters ['TIMESTAMP']" Machen.

Das Obige beschreibt nur datetime.datetime (JJJJ, MM, TT, hh, mm, ss) [Python] -> "JJJJ-MM-TT hh: mm: ss" [sqlite3]. Wo ist dann das umgekehrte Muster des obigen "JJJJ-MM-TT hh: mm: ss" [sqlite3] -> datetime.datetime (JJJJ, MM, TT, hh, mm, ss) [Python]? Ich werde die Geschichte weglassen. Grob gesagt ist die "Adapterfunktion", die als Zeichenfolge in SQLite eingegeben wird, wenn "datetime" ausgelöst wird, in "sqlite3 / dbapi2.py" vordefiniert.

Weitere Informationen finden Sie unter 11.13.5.4. Standardkonformitäts- und Konvertierungsfunktionen - SQLite in der Python Standard Library Reference. ist.

Recommended Posts

Wie man mit dem Datum / Uhrzeit-Typ in Pythons SQLite3 umgeht
Verwendung von SQLite in Python
Umgang mit Japanisch mit Python
Wie man in Python entwickelt
Umgang mit JSON in Ruby, Python, JavaScript, PHP
[Python] Wie man PCA mit Python macht
Umgang mit Sitzungen in SQLAlchemy
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
SQLite in Python
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
So arbeiten Sie mit BigQuery in Python
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
Umgang mit aufeinanderfolgenden Werten in MySQL
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus
So zeigen Sie Hello World in Python an
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
Zeitzonenspezifikation beim Konvertieren einer Zeichenfolge in einen Datums- / Uhrzeittyp mit Python
Verwendung der C-Bibliothek in Python
So empfangen Sie Befehlszeilenargumente in Python
[Python] Verwendung von zwei Arten von type ()
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
Zusammenfassung zum Importieren von Dateien in Python 3
So vereinfachen Sie die eingeschränkte Polypoly-Anpassung in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
So implementieren Sie Shared Memory in Python (mmap.mmap)
So erstellen Sie eine JSON-Datei in Python
So installieren Sie Python
Zusammenfassung der Verwendung von MNIST mit Python
[Einführung in Python] Umgang mit Daten im JSON-Format
So geben Sie die TLS-Version in Python-Anforderungen an
Wie man gut mit Linux-Befehlen aus Python umgeht
Verwenden Sie ein Kryptografiemodul, das OpenSSL in Python verarbeitet
So benachrichtigen Sie Discord-Kanäle in Python
So erhalten Sie Elemente vom Typ Wörterbuch von Python 2.7
So erhalten Sie die Dateien im Ordner [Python]
Wie man tkinter mit Python in Pyenv benutzt
So führen Sie LeapMotion mit Nicht-Apple Python aus
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So geben Sie "Ketsumaimo" standardmäßig in Python aus
[Python] Umgang mit japanischen Zeichen mit openCV
So nehmen Sie Python Interpreter-Änderungen in Pycharm vor
[Python] Vergleichen von Datum und Uhrzeit mit der hinzugefügten Zeitzone
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
So entfernen Sie doppelte Elemente in der Python 3-Liste
20. Offline-Echtzeit So schreiben Sie Probleme in Python