当使用 SQLAlchemy 从数据库中检索行时,您可以使用
query = "SELECT some_col FROM some_table"
row = session.execute(query).fetchone()
Run Code Online (Sandbox Code Playgroud)
但是,您也可以这样做:
query = "SELECT some_col FROM some_table LIMIT 1"
row = session.execute(query).fetchall()
Run Code Online (Sandbox Code Playgroud)
是否有任何理由选择其中一种而不是另一种,例如更好的性能?
第一个变体适用于所有 DBMS,第二个变体仅适用于支持非标准 LIMIT 关键字的 DBMS。因此,如果您想告诉数据库您希望将结果限制为一行,您最好使用 SQLAlchemy 核心而不是 SQL 语句作为字符串。就像是:
row = session.execute(select([some_table.c.some_col]).limit(1)).fetchone()
Run Code Online (Sandbox Code Playgroud)
如果您确实只查询一行和一列,您可能会考虑scalar()而不是fetchone():
value = session.execute(select([some_table.c.some_col]).limit(1)).scalar()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1828 次 |
| 最近记录: |