2014-03-25 85 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))