1. ホーム
  2. python

[解決済み] Pythonでsqliteからdatetimeを文字列ではなくdatetimeとして読み込むには?

2023-07-05 06:05:41

質問

Python 2.6.4のsqlite3モジュールを使って、SQLiteデータベースに日時を保存しています。SQLiteは自動的に日付を文字列に変換するので、挿入は非常に簡単です。問題は、それを読むときに文字列として戻ってくるのですが、私は元のdatetimeオブジェクトを再構築する必要があります。どうすればいいのでしょうか?

どのように解決するのですか?

カラムの型をtimestampで宣言すると、クローバーになります。

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

int (整数と宣言されたカラムの場合) と datetime (タイムスタンプと宣言されたカラムの場合) の両方が、型を維持したままラウンドトリップして生き残ることを確認してください。