如何将数据库的@@autocommit 变量设置为 0
时间: 2023-07-30 18:10:18 浏览: 46
可以使用以下SQL语句将数据库的 @@autocommit 变量设置为0:
```
SET @@autocommit = 0;
```
执行这个语句后,数据库的自动提交功能就会被关闭,意味着每个事务都需要手动提交。如果需要重新开启自动提交功能,可以使用以下语句:
```
SET @@autocommit = 1;
```
这个语句会将自动提交功能重新开启,每个SQL语句都会自动提交事务。
相关问题
sqlplus会话的环境变量设置
在使用 sqlplus 进行会话时,可以通过设置环境变量来定制会话的行为和属性。以下是一些常见的 sqlplus 环境变量及其作用:
- ORACLE_SID:指定要连接的 Oracle 实例的系统标识符。
- ORACLE_HOME:指定 Oracle 安装的根目录。
- NLS_LANG:指定客户端和服务器之间的字符集编码。
- SQLPATH:指定包含 SQL 脚本的目录列表。
- EDITOR:指定编辑 SQL 语句的默认文本编辑器。
- LINESIZE:指定每行的字符数。
- PAGESIZE:指定每页的行数。
- TIMING:启用或禁用打印 SQL 语句执行时间的功能。
- AUTOCOMMIT:启用或禁用自动提交事务的功能。
- ECHO:启用或禁用回显 SQL 语句的功能。
可以使用以下命令来设置这些环境变量:
```bash
export ORACLE_SID=mydb
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export SQLPATH=/home/oracle/scripts
export EDITOR=vi
export LINESIZE=120
export PAGESIZE=50
export TIMING=ON
export AUTOCOMMIT=OFF
export ECHO=ON
```
设置环境变量后,可以启动 sqlplus 并进行会话,sqlplus 将使用这些环境变量来确定其行为和属性。
sqlalchemy开启了autocommit,修改时并没有提交到数据库
如果你使用 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()` 方法刷新会话,确保我们看到的是最新的数据。最后,打印更新后的字段值,可以看到修改已经成功提交到了数据库。