2014-03-25 56 views
1

我正在反映我的MySQL數據庫的一些表格,並且我想在他們的某些列上應用過濾器。SQLAlchemy中不區分大小寫的列名?

meta = MetaData(bind=engine) 
table_backlog= meta.tables['backlog'] 
all_filters = and_(and_(*all_filters),and_(table_backlog.c.month != "NULL",table_backlog.c.month != None)) 

但問題是,有時列名稱的變化從monthMonth這樣的結果我的程序不工作了。 (我無法控制數據庫,它由其他人管理)。

那麼有沒有辦法讓SQLAlchemy/Python中的列不區分大小寫?

+0

確切位置在哪裏?爲什麼列名稱的變化?你可以在'Column'構造函數中明確地命名列,這樣它們就不依賴於如何命名錶/模型類中的屬性。 – 9000

回答

0

有可能是一個更好的辦法,但一個簡單的方法是隻得到一列忽略大小寫:

meta = MetaData(bind=engine) 
table_backlog= meta.tables['backlog'] 

cols = [_c for _c in table_backlog.columns if _c.name.lower() == "month"] 
assert (cols and len(cols) == 1), 'None or multiple column(s) named "month" found' 
col_month = cols[0] 

all_filters = and_(and_(*all_filters),and_(month_col != "NULL", month_col != None))