📜  SQLAlchemy ORM-更新对象(1)

📅  最后修改于: 2023-12-03 15:05:19.619000             🧑  作者: Mango

SQLAlchemy ORM - 更新对象

SQLAlchemy是一个Python ORM (Object Relational Mapper),它提供了一种将关系数据库中的数据映射到Python对象的方式。

在使用SQLAlchemy进行数据操作时,我们可能需要对数据进行更新,下面介绍如何在SQLAlchemy ORM中更新对象。

更新单个对象

要更新单个对象,我们需要先查询该对象,然后对其属性进行修改,最后提交更改即可。

from sqlalchemy.orm import sessionmaker
from models import User, engine

Session = sessionmaker(bind=engine)
session = Session()

# 查询单个对象
user = session.query(User).filter_by(id=1).one()

# 修改属性
user.name = 'Alice'

# 提交更改
session.commit()

上面的代码中,我们首先创建了一个Session对象,然后使用query方法查询到了id为1的User对象,接着修改了该对象的name属性,最后提交更改。

更新多个对象

除了可以更新单个对象,我们也可以批量更新多个对象,下面介绍两种更新多个对象的方法。

方法一:使用query方法和update方法

使用query方法和update方法可以一次性更新多个对象的属性。

from sqlalchemy.orm import sessionmaker
from models import User, engine

Session = sessionmaker(bind=engine)
session = Session()

# 使用 query 和 update 方法更新多个对象
session.query(User).filter(User.age > 30).update({'name': 'Bob'})

# 提交更改
session.commit()

上面的代码中,我们使用filter方法查询到了年龄大于30的所有用户,然后使用update方法将这些用户的name属性都修改为'Bob'

方法二:使用for循环遍历对象列表

使用for循环遍历对象列表可以逐一更新每个对象的属性。

from sqlalchemy.orm import sessionmaker
from models import User, engine

Session = sessionmaker(bind=engine)
session = Session()

# 查询多个对象
users = session.query(User).filter(User.age > 30).all()

# 逐一修改属性
for user in users:
    user.name = 'Bob'

# 提交更改
session.commit()

上面的代码中,我们首先使用filter方法查询到了年龄大于30的所有用户,然后使用all方法将查询结果转化为列表,接着使用for循环遍历列表,逐一修改每个对象的name属性,最后提交更改。

总结

本文介绍了如何在SQLAlchemy ORM中更新对象,包括更新单个对象和更新多个对象的两种方法。通过本文的学习,我们可以更加熟练地在Python中进行关系数据库的操作。