📅  最后修改于: 2023-12-03 15:05:19.619000             🧑  作者: Mango
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循环遍历对象列表可以逐一更新每个对象的属性。
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中进行关系数据库的操作。