Как разрешить sqlite3 хранить tzinfo? - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь сохранить 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))")

1 Ответ

0 голосов
/ 22 апреля 2019

Мне кажется, что вы хотите получить tzinfo через некоторое время из своей базы данных SQLite.Таким образом, ответ: вы не можете.

Но SQLite не запрещает вам хранить большой двоичный объект в столбце.Таким образом, вы можете выбрать tzinfo и сохранить его или создать собственное представление (то есть строку информации о часовом поясе) и сохранить его.Когда вы извлекаете данные из базы данных, просто извлеките или пересоберите tzinfo из вашего представления.

В некоторых случаях маринованная версия может быть бесполезна, особенно если вы хотите поддерживать некоторые вычисления (например, в пределах 1 часа разницы от заданного значения).часовой пояс) в операторе SQL.

...