Способ запроса базы данных с помощью SQLAlchemy, где дата является конкретным днем ​​недели? - PullRequest
3 голосов
/ 30 июля 2010

У меня есть таблица (называемая 'entry'), в которой есть столбец datetime (называемый 'access_date'), и я хочу выполнить запрос SQLAlchemy, который дает только результаты, где entry.access_date - понедельник (или любой другой день неделя, указанная числом [0..6]).

Возможно ли это? Я использую sqlite & SQLalchemy 0.5.8, если это имеет какое-либо значение.

Ответы [ 3 ]

2 голосов
/ 30 июля 2010

Не существует универсальной функции DAYOFWEEK (), поддерживаемой SQLAlchemy, поэтому вам придется использовать специфичный для диалекта sql в предложении where.

Для MySQL вы должны использовать пользовательский func 'weekday' или 'dayofweek', но поскольку в sqlite нет ни типа datetime, ни weekday () / dayofweek (), вам нужен какой-то необработанный sql.

http://www.mail-archive.com/sqlite-users@sqlite.org/msg51116.html вот примеры для этого запроса.

В SQLA это будет выглядеть как

query.filter("strftime('%w', access_date) = :dow").params(dow=0).all()
2 голосов
/ 03 августа 2010

В дополнение к ответу Даниэля Клюева я нашел другой способ сказать то же самое (возможно, более красивый?)

query.filter(func.strftime('%w', Entry.access_date) == str(weekday)).all()

Где день недели - число [0..6]

0 голосов
/ 30 июля 2010

Я не эксперт по SQLAlchemy, поэтому жду чужих мнений. Я адаптировал пример из http://www.sqlalchemy.org/docs/ormtutorial.html#common-filter-operators. Возможно, стоит попробовать и поэкспериментировать, пока вы ждете ответов других.

query.filter(entry.access_date.in_([0,1,2,3,4,5,6]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...