sqlite – python Получить CURRENT_TIMESTAMP как объект datetime

Я использую локальную базу данных sqlite для автономной обработки метаданных в своем приложении, а метаданные включают отметки времени.

У меня есть таблица, заявленная следующим образом:

CREATE TABLE if not exists tbl_dbsync_meta ( maindb_last_checked TIMESTAMP, global_scores_last_checked TIMESTAMP, localscores_syncup_last_checked TIMESTAMP) 

Теперь, в какой-то момент, я извлекаю CURRENT_TIMESTAMP из sqlite вместе со всеми другими отметками времени выше, чтобы, естественно, выяснить разницу во времени между теперь и всеми этими другими метками времени.

 SELECT CURRENT_TIMESTAMP as this_time, * FROM tbl_dbsync_meta 

Теперь проблема в том, что все остальные поля корректно извлекаются как объекты «datetime» в Python. Однако CURRENT_TIMESTAMP возвращается как строка.

Я попробовал лить CURRENT_TIMESTAMP :

 SELECT CAST(CURRENT_TIMESTAMP AS TIMESTAMP), * FROM tbl_dbsync_meta 

Но теперь он возвращается как INTEGER, и все, что возвращается, – год (2012).

Легкий способ обойти это – просто непосредственно SELECT время-diff из самого sqlite, вместо того, чтобы извлекать их в python, а затем играть. Другой вариант – использовать строку, возвращаемую CURRENT_TIMESTAMP , преобразовать ее в Python в «datetime» и использовать ее.

Однако мне нужно понять, ЧТО разница между CURRENT_TIMESTAMP (литой или иначе) и другими полями TIMESTAMP . Просто кажется неправильным, что это не работает.

Спасибо за вашу помощь.

PS: Обратите внимание: я никогда не храню объекты Datettime Python непосредственно в SQLite. В любое время, когда мне нужно обновить эту таблицу, я просто SET global_scores_last_checked = CURRENT_TIMESTAMP . Я только извлекаю даты из SQLite в Python по необходимости.

One Solution collect form web for “sqlite – python Получить CURRENT_TIMESTAMP как объект datetime”

При подключении необходимо установить PARSE_COLNAMES :

sqlite3.connect(':memory:', detect_types=sqlite3.PARSE_COLNAMES)

Затем будет работать следующее:

select current_timestamp as 'ts [timestamp]'

Это вернет "2012-08-07 13:20:42" (<type 'datetime.datetime'>) .

CAST не работает (скорее всего, ошибка), а CURRENT_TIMESTAMP не возвращает тип datetime, что может быть ошибкой или функцией (помните, что Sqlite не имеет понятия о типах даты и времени, он хранит их как TEXT / REAL / INTEGER).

Interesting Posts

В чем разница между методами len () и sys.getsizeof () в python?

Как я могу анализировать временные интервалы свободного текста в Python, начиная с нескольких лет?

Numpy выбирает определенный индекс столбца для каждой строки, используя список индексов

список элементов списка счетчиков python и поместить результат в список

Неожиданно изменяется массив numpy при смене другого, несмотря на то, что он является отдельным

запросы – как потоковая загрузка – частичный файл

Как печатать в следующем году с текущего года в Python

ftplib – создание файла очень медленно: SSLError: таймаут операция чтения

Сортировка списка по атрибуту, который может быть None

Python tarfile и исключает

обработка пакетов верхнего уровня с помощью setuptools (или другого построителя яиц python)

Идиома вложенного цикла Python

Является ли "backporting" Python 3 `range` для Python 2 плохая идея?

Автозаполнение PyCharm

Использование SPARQL для ограниченных рассуждений RDFS и OWL

Python - лучший язык программирования в мире.