2014-06-30 24 views
0

我想動態選擇列,我查詢等等例如:SQLAlchemy的動力在哪裏

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) 

感謝

回答

2

相反按屬性訪問table.c,請使用get方法。

>>> 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,但它的作品。