sqlalchemy开启了autocommit,修改时并没有提交到数据库
时间: 2024-03-15 17:46:01 浏览: 23
如果你使用 SQLAlchemy 开启了 autocommit 模式,那么所有的 SQL 语句都将自动提交到数据库,不需要手动调用 `commit` 方法。但是,如果你修改了数据却没有看到更新,可能是因为你没有刷新会话,也就是没有重新从数据库中读取数据。在 SQLAlchemy 中,可以使用 `session.refresh()` 方法刷新会话中的对象。
下面是一个示例代码,演示了如何使用 autocommit 模式并刷新会话:
```python
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql://user:password@localhost/db_name', echo=True, autocommit=True)
Session = sessionmaker(bind=engine)
session = Session()
# 修改数据
obj = session.query(MyModel).get(1)
obj.field1 = 'new value'
# 刷新会话
session.refresh(obj)
# 现在可以看到更新后的值
print(obj.field1)
```
在这个例子中,我们使用 `sessionmaker` 创建了一个会话,并将 `autocommit` 参数设置为 `True`,这样所有的 SQL 语句都会自动提交到数据库。然后,我们从会话中获取一个对象,修改了其中的一个字段,然后调用 `session.refresh()` 方法刷新会话,确保我们看到的是最新的数据。最后,打印更新后的字段值,可以看到修改已经成功提交到了数据库。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)