我正在尝试将tzinfo获取的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))")发布于 2019-04-22 21:45:57
在我看来,您希望稍后从SQLite数据库中取回tzinfo。所以答案是你不能。
但是SQLite并不禁止您将blob存储到列中。因此,您可以选择tzinfo并将其存储,或者构建您自己的表示形式(即,时区信息字符串)并将其存储。当您从数据库检索时,只需从您的表示中取消选取或重新构建tzinfo即可。
Pickled版本在某些情况下可能没有用处,特别是你想在SQL语句中支持一些计算(例如,与给定时区相差1小时内)。
https://stackoverflow.com/questions/55792160
复制相似问题