使用SQLAlchemy从数据库中检索行时,您可以使用
query = "SELECT some_col FROM some_table"
row = session.execute(query).fetchone()
但是,您也可以这样做:
query = "SELECT some_col FROM some_table LIMIT 1"
row = session.execute(query).fetchall()
是否有任何理由比另一个更喜欢一个更好的表现?
答案 0 :(得分:0)
第一个变体适用于所有DBMS,第二个变体仅适用于支持LIMIT关键字(非标准)的那些。因此,如果要告诉数据库将结果限制为仅一行,则最好使用SQLAlchemy核心而不是将SQL语句用作字符串。像这样:
row = session.execute(select([some_table.c.some_col]).limit(1)).fetchone()
如果您只查询只有一行的一行,则可以考虑使用scalar()
而不是fetchone()
:
value = session.execute(select([some_table.c.some_col]).limit(1)).scalar()