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.
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.
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.