Найти - Пользователи
Полная версия: sqlalchemy select: передать на вход and_ сгенерированный набор условий
Начало » Базы данных » sqlalchemy select: передать на вход and_ сгенерированный набор условий
1
axe
версия алхимии 0.4.7

в выражении select нужно использовать несколько условий. соединяю их через and_
        l_Select =  select( [attr.c.column_id], 
and_(attr.c.expression == None,
attr.c.column_id > 0)
)
по задаче, – какие-то из условий выборки могут быть отключены, какие-то могут появляться в специальных случаях

как в процессе выполнения программы динамически сгенерировать параметры для and_ ?

по-моему, в более старых версиях алхимии была возможность вместо and_ передавать на вход dict
да/нет?
Андрей Светлов
грубо говоря
filters = []
if f1():
filters.append(attr.c.expression == None)
if f2():
filters.append(attr.c.column_id > 0)
l_Select = select( [attr.c.column_id], and_(*filters))
bw
>>> from sqlalchemy import MetaData, Table, Column, Integer, or_
>>> m = MetaData()
>>> t = Table('foo', m, Column('id', Integer, primary_key = True))

>>> clause = or_()
>>> clause.append(t.c.id == 1)
>>> clause.append(t.c.id == 2)

>>> print clause.compile()
foo.id = :id_1 OR foo.id = :id_2
>>> print clause.compile().params
{'id_2': 2, 'id_1': 1}
>>> print t.select(clause)
SELECT foo.id
FROM foo
WHERE foo.id = :id_1 OR foo.id = :id_2
..bw
axe
спасибо за оба варианта!
проверил, работают.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB