如何讓sqlite3儲存tzinfo?

2024-09-26 18:11:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将tzinfogotfrom 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))")

Tags: import类型dbsqlitedatetimetimenotaccount
1条回答
网友
1楼 · 发布于 2024-09-26 18:11:02

在我看来,您希望稍后从SQLite数据库中获取tzinfo。所以答案是你不能。你知道吗

但是SQLite并不禁止将blob存储到列中。因此,您可以对tzinfo进行pickle处理并存储它,或者创建自己的表示(即,一个时区信息字符串)并存储它。从数据库检索时,只需从表示中取消拾取或重建tzinfo。你知道吗

Pickled版本在某些情况下可能没有用处,特别是您希望在SQL语句中支持某些计算(例如,与给定时区相差1小时以内)。你知道吗

相关问题 更多 >

    热门问题