Sqlite python sqlite3.OperationalError:数据库被锁定
发布时间:2020-12-12 19:05:43 所属栏目:百科 来源:网络整理
导读:我编写了以下代码,它显示了sqlite3.OperationalError:数据库被锁定错误.任何调试帮助将非常感激. 基本上我试图将数据从table1复制到table2,并根据某些其他应用程序发生在table1上的更改将数据插入到table2中. 看起来我错过了一些部分. import sqlite3conn =
我编写了以下代码,它显示了sqlite3.OperationalError:数据库被锁定错误.任何调试帮助将非常感激.
基本上我试图将数据从table1复制到table2,并根据某些其他应用程序发生在table1上的更改将数据插入到table2中. 看起来我错过了一些部分. import sqlite3 conn = sqlite3.connect("/home/sid/.Skype/testmasterut/main.db") cursor = conn.cursor() createLogTableSql = """create table IF NOT EXISTS sid_log as select id as "s_id",author as "s_author",timestamp as "s_timestamp",edited_by as "s_editedby",edited_timestamp as "s_edited_timestamp",body_xml as "s_body_xml" from Messages""" cursor.execute(createLogTableSql) conn.commit() print "Table to save the old messages has been created" selectLog = """ select * from sid_log """ original_table = cursor.execute(selectLog) cursor2 = conn.cursor() cursor3 = conn.cursor() cursor4 = conn.cursor() InsertTest = """ insert or ignore into sid_log (s_id,s_author,s_timestamp,s_editedby,s_edited_timestamp,s_body_xml) select id,author,timestamp,edited_by,edited_timestamp,body_xml from Messages where id not in (select s_id from sid_log where s_id = id) and edited_by is NULL and edited_timestamp is NULL """ EditedTest = """ select * from Messages where id in (select s_id from sid_log where s_id = id) and edited_by is not NULL and edited_timestamp is not NULL""" conn.close() while True: conn2 = sqlite3.connect("/home/sid/.Skype/testmasterut/main.db",timeout=3) conn2.execute(InsertTest) print "Total number of rows changed:",conn.total_changes EditedTest2 = """ select * from Messages where id in (select s_id from sid_log where s_id = id) and edited_by is not NULL and edited_timestamp is not NULL""" edited_list = conn2.execute(EditedTest2) conn2.commit() conn2.close() # for row in edited_list: # queryString = "SELECT * FROM sid_log WHERE s_id IN (%s)" % str(row[0]) # original_message = conn.execute(queryString) # for org_row in original_message: # print "Message edited from",org_row[5],"to",row[5] 编辑 Traceback (most recent call last): File "try2.py",line 28,in <module> conn2.execute(InsertTest) sqlite3.OperationalError: database is locked我不确定这是否会对任何人有所帮助,但我找到了解决我自己的锁定数据库问题的方法. 我使用PyCharm,发现我正在处理的脚本的几个实例都在运行.这通常是由于我正在测试的代码中的错误,但它保持活动状态(因此与db的连接仍处于活动状态).关闭那些(停止所有过程)并再试一次 – 它每次都适合我! 如果有人知道一段时间后让它超时的方法,请评论此解决方案.我尝试了cur.execute(“PRAGMA busy_timeout = 30000”)(从类似问题的另一个线程中找到)但它似乎没有做任何事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |