sqlalchemy 模糊查询 查询条件可为空
时间: 2023-12-15 20:06:34 浏览: 31
可以使用 SQLAlchemy 的 `ilike()` 方法来实现模糊查询,并且查询条件可以为空。示例代码如下:
```python
from sqlalchemy import create_engine, Column, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建engine和session
engine = create_engine('postgresql://username:password@host:port/database')
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(String, primary_key=True)
name = Column(String)
email = Column(String)
# 模糊查询示例:查询 name 包含 'Tom' 的用户
query = session.query(User).filter(User.name.ilike('%Tom%'))
# 如果查询条件为空,则返回所有记录
if condition is None:
query = session.query(User)
# 执行查询
results = query.all()
```
在上面的示例中,我们定义了一个 `User` 模型,并使用 `ilike()` 方法来实现模糊查询。当查询条件为空时,我们可以直接调用 `query()` 方法来查询所有记录。注意,如果查询条件包含用户输入的字符串,则需要对输入进行安全验证和过滤,以避免 SQL 注入攻击等安全问题。