所以我知道这个问题在烧瓶中并不新鲜,人们之前已经问过了.但是我在bash中执行数据库命令时仍然遇到问题,因为我是python的新手.这就是我做的
import sqlite3
conn = sqlite.connect('/home/pjbardolia/mysite/tweet_count.db')
c = conn.cursor()
c.execute("create table count_twitter (count_id integer primary key autoincrement ,count_present integer not null,last_tweet not null)")
c.execute(insert into count_twitter values('',10,10))
Run Code Online (Sandbox Code Playgroud)
但是在执行insert语句后,我收到操作错误:数据库被锁定.有人可以简单地说出这个错误意味着什么吗?以及如何解决它.提前致谢
Nim*_*ush 23
这就是这个错误意味着什么:
SQLite意味着是一个轻量级数据库,因此不能支持高级别的并发性.OperationalError:数据库已锁定错误表示您的应用程序正在经历比sqlite在默认配置中可以处理的更多并发性.此错误意味着一个线程或进程对数据库连接具有独占锁定,另一个线程超时等待释放锁定.
Python的SQLite包装器有一个默认的超时值,它确定第二个线程在超时之前允许等待锁的时间长度并引发OperationalError:数据库被锁定错误.
如果您收到此错误,可以通过以下方式解决:
切换到另一个数据库后端.在某个时刻,SQLite对于真实世界的应用程序来说太"精简"了,而这些并发错误表明你已经达到了这一点.
重写代码以减少并发性并确保数据库事务是短暂的.
通过设置timeout database选项来增加默认超时值.
可能您的代码中有另一个未关闭或未提交的连接,这会导致此错误.execute当它已被另一个锁定时,基本上试图做第二个.如果您真的想拥有并发事务,则需要拥有RDBMS.
| 归档时间: |
|
| 查看次数: |
26980 次 |
| 最近记录: |