python - type - sqlite timestamp to date




Come leggere datetime back da sqlite come un datetime anziché una stringa in Python? (2)

Sto usando il modulo sqlite3 in Python 2.6.4 per archiviare un datetime in un database SQLite. Inserirlo è molto semplice, perché sqlite converte automaticamente la data in una stringa. Il problema è che, leggendolo, torna come una stringa, ma ho bisogno di ricostruire l'oggetto datetime originale. Come faccio a fare questo?


Nota: in Python3, ho dovuto modificare l'SQL in qualcosa di simile:

SELECT jobid, startedTime as "st [timestamp]" FROM job

(Dovevo nominare esplicitamente la colonna.)


Se dichiari la tua colonna con un tipo di timestamp, sei nel trifoglio:

>>> db = sqlite3.connect(':memory:', detect_types=sqlite3.PARSE_DECLTYPES)
>>> c = db.cursor()
>>> c.execute('create table foo (bar integer, baz timestamp)')
<sqlite3.Cursor object at 0x40fc50>
>>> c.execute('insert into foo values(?, ?)', (23, datetime.datetime.now()))
<sqlite3.Cursor object at 0x40fc50>
>>> c.execute('select * from foo')
<sqlite3.Cursor object at 0x40fc50>
>>> c.fetchall()
[(23, datetime.datetime(2009, 12, 1, 19, 31, 1, 40113))]

Vedere? sia int (per una colonna dichiarata integer) che datetime (per una colonna dichiarata timestamp) sopravvivono al round-trip con il tipo intatto.







sqlite3