Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3的sqlite3模块中的自动提交问题_Python_Python 3.x_Sqlite_Autocommit - Fatal编程技术网

Python3的sqlite3模块中的自动提交问题

Python3的sqlite3模块中的自动提交问题,python,python-3.x,sqlite,autocommit,Python,Python 3.x,Sqlite,Autocommit,在给定数据库连接中关闭自动提交模式时遇到问题。根据我从sqlite3模块文档中了解到的情况,下面的python代码不应该引发任何AssertionError异常,但它确实会引发 数据库中已存在表“nomes”并包含列“Nome” Sqlite3文档在此: 获取或设置当前隔离级别。对于自动提交模式或“延迟”、“立即”或“独占”模式,无。有关更详细的说明,请参阅“控制事务”一节 这里我缺少什么?独立于您使用的隔离级别,使用with语句意味着在with块结束后,一切都将自动处理 这意味着提交任何剩余

在给定数据库连接中关闭自动提交模式时遇到问题。根据我从sqlite3模块文档中了解到的情况,下面的python代码不应该引发任何AssertionError异常,但它确实会引发

数据库中已存在表“nomes”并包含列“Nome”

Sqlite3文档在此:

获取或设置当前隔离级别。对于自动提交模式或“延迟”、“立即”或“独占”模式,无。有关更详细的说明,请参阅“控制事务”一节


这里我缺少什么?

独立于您使用的
隔离级别
,使用
with
语句意味着在
with
块结束后,一切都将自动处理

这意味着提交任何剩余的未结交易

请查看以下文档:

连接对象可以用作上下文管理器,自动 提交或回滚事务。如果发生异常,则 事务被回滚;否则,事务将被提交:

import sqlite3

_PATH_DB = '/rhome/FNORO/tabelao/sofia.sqlite' # path to database
_ISOLATION_LEVEL = "EXCLUSIVE"
_TEST_NAME = "TEST1"

# delete name from database
with sqlite3.connect(_PATH_DB, isolation_level = _ISOLATION_LEVEL) as conn:
    query = 'DELETE FROM nomes WHERE nome = "{}"'.format(_TEST_NAME)
    conn.execute(query)
    conn.commit()

# insert name _TEST_NAME without executing conn.commit()
with sqlite3.connect(_PATH_DB, isolation_level = _ISOLATION_LEVEL) as conn:
    query = 'INSERT INTO nomes(nome) VALUES("{}")'.format(_TEST_NAME)
    conn.execute(query)

# check if name already existis
with sqlite3.connect(_PATH_DB, isolation_level = _ISOLATION_LEVEL) as conn:
    query = 'SELECT nome FROM nomes WHERE nome = "{}"'.format(_TEST_NAME)
    res = conn.execute(query).fetchall()
    assert (res == [])
isolation_level