sqlalchemy 查询结果为空时,如何查询字段名
时间: 2024-01-02 18:01:50 浏览: 31
当查询结果为空时,执行 `result.keys()` 方法会抛出 `AttributeError` 异常,因为 `ResultProxy` 对象没有查询到任何结果,因此没有字段名可供返回。
为了处理这种情况,可以使用 `result.keys()` 方法的一个变体 `result.keys()`,它可以返回一个包含所有字段名的列表或者 `None`,例如:
```python
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
engine = create_engine('sqlite:///example.db', echo=True)
metadata = MetaData()
users = Table(
'users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer),
)
with engine.connect() as conn:
result = conn.execute(users.select().where(users.c.id == 0))
print(result.keys()) # 输出 None
print(result.keys() or []) # 输出 []
```
这里的 `result.keys() or []` 表达式会返回一个包含所有字段名的列表或者空列表 `[]`,这样就可以避免抛出异常了。