SQLAlchemy 是一个强大的 Python SQL 工具包和对象关系映射(ORM)库。它提供了一种高级的抽象方式来与数据库进行交互,使得开发者可以使用 Python 类和对象来操作数据库表,而不是直接编写 SQL 语句。
session.commit()
是 SQLAlchemy ORM 中的一个方法,用于提交当前会话中的所有更改到数据库。当调用 session.commit()
时,所有在当前会话中通过 ORM 对象进行的更改(如添加、修改、删除记录)都会被持久化到数据库中。
“刷新”行为通常指的是将 ORM 对象的状态同步到数据库中,或者从数据库中重新加载最新的数据到 ORM 对象中。在 SQLAlchemy 中,这可以通过 session.refresh()
方法来实现。
session.commit()
和 session.refresh()
是 SQLAlchemy ORM 中用于管理会话状态和数据库交互的方法。session.commit()
后数据没有更新到数据库?session.add()
或 session.merge()
方法来跟踪更改。session.flush()
方法强制将更改发送到数据库,但注意这不保证提交成功。session.refresh()
后数据没有刷新?session.refresh()
之前,对象已经被添加到会话中,并且会话处于活动状态。from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
# 添加新用户
new_user = User(name='Alice')
session.add(new_user)
session.commit() # 提交更改到数据库
# 修改用户名称
user = session.query(User).filter_by(name='Alice').first()
user.name = 'Bob'
session.commit() # 提交更改到数据库
# 刷新用户对象以获取最新数据
session.refresh(user)
print(user.name) # 输出 'Bob'
领取专属 10元无门槛券
手把手带您无忧上云