SqlAlchemy动态Wh

2024-07-03 05:58:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想动态选择要查询的列,例如:

metadata = MetaData(bind = engine)
booking_table = Table("Bookings",metadata,autoload = True, schema = "SGM")
select_meta = select([booking_table],booking_table.c.event_date==date_string)
conn.execute(select_meta)

会变成这样。。。你知道吗

def dynamic_search(field,value):
    booking_table = Table("Bookings",metadata,autoload = True, schema = "SGM")
    select_meta = select([booking_table],booking_table.c.field==value)   #Here are the changes
    conn.execute(select_meta)

谢谢


Tags: truefieldexecutedateschematableconnselect
1条回答
网友
1楼 · 发布于 2024-07-03 05:58:29

使用get方法而不是通过属性访问table.c。你知道吗

>>> from sqlalchemy import MetaData, Table, Integer, Column, create_engine
>>> engine = create_engine('sqlite://')
>>> metadata = MetaData(bind=engine)
>>> table = Table("Bookings", metadata,
...     Column('id', Integer(), primary_key=True,),
...     Column('value', Integer(),),
... )
>>> field = 'value'
>>> table.c.get(field)
Column('value', Integer(), table=<Bookings>)
>>> table.c[field]
Column('value', Integer(), table=<Bookings>)

因此,对于您的示例,代码类似于booking_table.c[field]。你知道吗

记住清理输入;您可能可以检查field in table.c

>>> field in table.c
True
>>> 'id' in table.c
True
>>> 'nothere' in table.c
False

Looks like this isn't officially documented,但它是有效的。你知道吗

相关问题 更多 >