SQLAlchemy中不区分大小写的列名?

时间:2014-03-25 14:12:44

标签: python mysql sqlalchemy

我反映了我的MySQL数据库的一些表格,并且我想在他们的一些列上应用过滤器。

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))

但问题是,有时列名称会从month更改为Month,因此我的程序不再有效。 (我无法控制数据库,它由其他人管理)。

那么有没有办法让SQLAlchemy / Python中的列不区分大小写?

1 个答案:

答案 0 :(得分: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))