我有一个sqlalchemy / postgres查询,运行方式如下(示例代码):
start = # a datetime value
end = # a datetime value
engine = # the definition of an engine
table = Table('table_name', ... etc. ...)
query = select(['*'])
results = engine.connect().execute(query).where(between(table.c.some_column, start, end))
这很简单直接。但是,事实证明我想要使用不同的表名和不同的列名重用此代码,这两个名称都在配置文件中指定为字符串。
例如,假设表" xyz"包含一个名为" the_timestamp"的列,并假设表" abc"包含一个名为" the_time"的列。我联想" xyz"用" the_timestamp"在配置文件中并关联" abc"用" the_time"在配置文件中。然后,根据从配置文件中选择的表/列组合,where
子句将使用" the_timestamp"如果表是" xyz"和" the_time"如果表是" abc"。
显然,这部分表格是微不足道的,因为Table()
函数将字符串作为参数。但是,where
子句中的列名不是字符串,而是对sqlalchemy对象的引用。我希望将where
子句中的列名动态设置为配置文件中的列名字符串,而不是使用预定义的对象作为列的名称。
我还没有找到如何在sqlalchemy中做到这一点。谢谢你的建议。