欢迎访问宙启技术站
智能推送

SQLAlchemy.ext.declarative中的数据过滤和条件查询

发布时间:2023-12-29 03:24:35

SQLAlchemy.ext.declarative是SQLAlchemy的一个模块,用于对象到关系的映射。在SQLAlchemy.ext.declarative中,可以使用数据过滤和条件查询来过滤和查询数据。以下是一个使用例子,展示了如何在SQLAlchemy.ext.declarative中使用数据过滤和条件查询。

首先,我们需要创建一个基础模型类,定义数据库表的结构和字段:

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

接下来,我们可以使用SQLAlchemy的Session来创建或查询对象:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建数据库连接
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)

# 创建Session
Session = sessionmaker(bind=engine)
session = Session()

# 创建一个新用户对象
new_user = User(name='John', age=25)
session.add(new_user)
session.commit()

# 查询年龄小于30的用户
users = session.query(User).filter(User.age < 30).all()

for user in users:
    print(user.name)

# 更新指定用户的年龄
user = session.query(User).filter_by(name='John').first()
user.age = 30
session.commit()

# 删除指定用户
session.query(User).filter_by(name='John').delete()
session.commit()

在这个例子中,我们首先创建了一个基础模型类User,然后使用Session创建了一个新的用户对象,并将其添加到数据库中。接着,我们使用filter和all方法查询了年龄小于30的所有用户,并打印了他们的姓名。然后,我们更新了名为John的用户的年龄,并将其持久化到数据库。最后,我们使用filter_by和delete方法删除了名为John的用户。

通过这个例子,我们可以看到如何在SQLAlchemy.ext.declarative中使用数据过滤和条件查询来过滤和查询数据。我们可以使用filter和filter_by方法来指定过滤条件,使用all方法获取所有匹配的结果,使用first方法获取 个匹配的结果,使用delete方法删除匹配的结果,并通过commit方法将修改持久化到数据库中。