如何让 sqlite3 存储 tzinfo?

我正在尝试将tzinfogot存储from tzlocal.getlocalzone()到 sqlite3 表中。


如何让 sqlite 接受tzinfo类型?


import sqlite3

import datetime

import pytz

from tzlocal import get_localzone


db = sqlite3.connect("tztestings.sqlite", detect_types=sqlite3.PARSE_DECLTYPES)

db.execute("CREATE TABLE IF NOT EXISTS history (time TIMESTAMP NOT NULL, timediff TZINFO NOT NULL,"

           " account TEXT NOT NULL, amount INTEGER NOT NULL, PRIMARY KEY (time, account))")


宝慕林4294392
浏览 187回答 1
1回答

料青山看我应如是

tzinfo在我看来,您想稍后从 SQLite 数据库中取回。所以答案是你不能。但是 SQLite 并不禁止您将 blob 存储到列中。所以你可以腌制tzinfo并存储它,或者组成你自己的表示(即,一串时区信息)并存储它。当您从数据库中检索时,只需从您的表示中解开或重建 tzinfo。Pickled 版本在某些情况下可能没有用,尤其是您希望在 SQL 语句中支持某些计算(例如,与给定时区相差 1 小时内)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python