2015-02-26 2 views
1

Я использую Peewee для доступа к SQLite DB. Как сохранить временную метку в следующем формате?Форматирование дат и времени с помощью Peewee и SQLite

'%Y-%m-%d %H:%M:%S' # year-month-day hour-minute-second 

(в основном: просто усечь микросекунд, которые присутствуют по умолчанию)

EDIT: Я был в состоянии сделать эту работу, используя следующее определение класса:

created = DateTimeField(default=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S)) 

Тем не менее, я все еще заинтересован, чтобы узнать, есть ли «встроенный» способ сделать это с Peewee, используя параметр «formats».

ответ

1

Это фактически не будет работать, так как метка времени оценивается во время импорта (или времени, когда оно объявлено). Peewee на самом деле не заботится о том, что формат будет в базе данных, так как он просто возьмет объект datetime python и позволит pysqlite преобразовать его.

Если вы хотите, лучшим способом будет подкласс DateTimeField и переопределить метод db_value.

+0

Это действительно работает. Поможет ли это сделать работу без добавления() к datetime.now? – bsuire

+1

'default = datetime.datetime.now()' - это будет оцениваться * один раз * и только * один раз *, а не каждый раз, когда объект создается. Это то, что я подразумеваю под этим, не работает. – coleifer

+0

Хорошо, спасибо за головы! Пока этого не осознал. Поэтому тогда необходимо подклассирование. – bsuire