使用SQLAlchemy中的反射表检索列的最大值

时间:2013-11-05 18:42:05

标签: python sql postgresql sqlalchemy

问题很简单。你有一个数据库,你有一个表,你有一个属性。 您要做的是连接到数据库,在表中查询特定属性表的内容的最大值。

到目前为止我尝试的是:

attr_name = 'foo'
meta = MetaData()
meta.reflect(bind=self._engine)
obj_table = meta.tables[table_name]

print("<< select max(attr_name) from obj_table >>")

我想要做的是打印出最大值。我尝试了会话,getattr ..毫无头绪。我只想从一个名称通过参数传递的列中获取该表的最大值(我不能使用点表示法)。

有任何线索吗?

1 个答案:

答案 0 :(得分:1)

from sqlalchemy import select, func

col = getattr(obj_table.c, attr_name)
q = select([func.max(col)], obj_table)
with self._engine.connect() as conn:
    res = conn.execute(q)
    max_value = res.fetchone()[0]

这里重要的是通过obj_table.c(或obj_table.columns)访问表格列。