Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Python 2.7 无法检测sqlite中的锁_Python 2.7_Sqlite - Fatal编程技术网

Python 2.7 无法检测sqlite中的锁

Python 2.7 无法检测sqlite中的锁,python-2.7,sqlite,Python 2.7,Sqlite,我通过python sqlite3模块在python中使用SQLite。我在共享数据库上进行多处理,但不是多线程 阅读文档,似乎应该通过Connection.isolation\u level()控制锁定 然而,当我打开两个不同的python交互进程并执行下面的语句时,我得到了相同的结果。显然,这两个进程都以独占方式锁定了数据库 什么样的Python语句序列会导致一个进程拥有锁,而另一个进程知道它已被拒绝?被锁定的流程如何得知它被锁定?sqlite3是否会引发错误,或者Connection.is

我通过python sqlite3模块在python中使用SQLite。我在共享数据库上进行多处理,但不是多线程

阅读文档,似乎应该通过Connection.isolation\u level()控制锁定

然而,当我打开两个不同的python交互进程并执行下面的语句时,我得到了相同的结果。显然,这两个进程都以独占方式锁定了数据库

什么样的Python语句序列会导致一个进程拥有锁,而另一个进程知道它已被拒绝?被锁定的流程如何得知它被锁定?sqlite3是否会引发错误,或者Connection.isolation_level()是否返回错误

$python
Python 2.7.13(默认值,2017年3月31日,11:27:49)
达尔文上的[GCC 4.2.1兼容苹果LLVM 8.1.0(clang-802.0.38)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入sqlite3
>>>conn=sqlite3.connect('data/preciscttracker.db')
>>>康涅狄格州
>>>连接隔离_level='EXCLUSIVE'
>>>连接隔离层
“独家”
>>> 

隔离级别
属性控制隔离级别,而隔离级别在应用程序中没有太大影响

连接只有在实际访问数据库文件时才会锁定。因此,为了测试锁定,您必须执行一些SQL命令来读取或写入某些内容

如果连接无法获得锁,则会出现“数据库已锁定”错误。 大多数事务都很短(如果您没有忘记调用
commit()
),那么可以通过设置

$ python
Python 2.7.13 (default, Mar 31 2017, 11:27:49) 
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> conn = sqlite3.connect('data/precinctTracker.db')
>>> conn
<sqlite3.Connection object at 0x1011a53d0>
>>> conn.isolation_level ='EXCLUSIVE'
>>> conn.isolation_level 
'EXCLUSIVE'
>>>