1

問題は非常に簡単に説明されています。DBがあり、テーブルがあり、属性があります。あなたがしたいことは、データベースに接続し、特定の属性のテーブルのコンテンツの最大値をテーブルに照会することです。

私がこれまでに試したことは次のとおりです。

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 を使用して、セッションで試しました..手がかりがありません。パラメータで渡された名前を持つ列から、このテーブルから最大値を取得したいだけです(ドット表記は使用できません)。

どんな手掛かり?

4

1 に答える 1

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) を介してテーブルの列にアクセスすることです。

于 2013-11-05T19:39:41.220 に答える