sqlalchemy case when的用法
时间: 2023-09-01 15:10:00 浏览: 55
在SQLAlchemy中,你可以使用`case()`函数来模拟SQL的`CASE WHEN`语句。`case()`函数允许你在查询中进行条件判断,并返回不同的值。
以下是一个示例,演示如何在SQLAlchemy中使用`case()`函数:
```python
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy import case, select, text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
# 创建数据库连接
engine = create_engine("your_database_connection_string")
Session = sessionmaker(bind=engine)
session = Session()
# 定义数据模型
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# 查询示例
query = select([
User.name,
case(
[
(User.age >= 18, "成年人"),
(User.age < 18, "未成年人")
],
else_="未知"
).label("age_group")
])
# 执行查询
result = session.execute(query)
# 打印查询结果
for row in result:
print(f"姓名: {row.name}, 年龄分组: {row.age_group}")
```
在上面的示例中,我们首先导入了所需的模块和函数。
然后,我们定义了一个数据模型`User`,它对应数据库中的`users`表。
接下来,我们使用`case()`函数来模拟`CASE WHEN`语句。在`case()`函数中,我们指定了条件列表和对应的返回值。最后,我们使用`label()`函数给返回的值命名为`age_group`。
在查询示例中,我们使用`select()`函数指定要查询的字段,并使用`case()`函数作为一个字段来返回年龄分组。
最后,我们通过执行查询并打印结果来获取结果。
请注意,你需要将`"your_database_connection_string"`替换为你的实际数据库连接字符串。
希望这个示例能帮助你理解如何在SQLAlchemy中使用`case()`函数来模拟`CASE WHEN`语句。如果你有其他问题,请随时提问!