python – sqlite3数据库被锁定
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – sqlite3数据库被锁定,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2147字,纯文字阅读大概需要4分钟。
内容图文
![python – sqlite3数据库被锁定](/upload/InfoBanner/zyjiaocheng/903/97620dfed13b4a76a8b33351fdddd73f.jpg)
我必须从操作表中删除记录时出现数据库锁定错误.
在sqlite3数据库上有两个读写程序
一个是在sqlite3表上写入硬件操作结果的c程序,另一个是从sqlite读取记录并在完成作业后处理它们并删除行的python脚本.
但删除行时python脚本show database被锁定错误..
db name:db.db
数据库表:
表’行动'(
‘摆脱’INTEGER PRIMARY KEY AUTOINCREMENT,
‘所有者’INTEGER,
‘行动’文字,
‘node’TEXT,
‘价值’文字
python脚本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sqlite3
import time
import os.path
import requests
#import urllib.parse
#defines
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(BASE_DIR+"/dbs/", "db.db")
wd_file_path = os.path.join(BASE_DIR, "wd")
pid = os.getpid()
conn = sqlite3.connect(db_path, isolation_level=None ,timeout=30000)
print ("Opened database successfully");
while True:
res = conn.execute("select * from 'actions' where 'owner'='1';")
#conn.commit()
data=res.fetchone()
print(data)
if (data is None) :
print('nothing @ '+str(time.time()))
with open(wd_file_path, 'w') as file_:
file_.write("{'pid'='"+str(pid)+"','time'='"+str(time.time())+"'}")
time.sleep(0.5)
else:
#print(data)
r = requests.post("http://127.0.0.1/json.php", data={'act': data[2], 'val': data[4]})
#if (r.text == '1'):
conn.execute("delete from 'actions' where 'rid'="+str(data[0])+";")
conn.commit()
#else:
# print(r.text)
你可以看到我在我的连接上放了isolation_level = None和timeout = 30000
但我多次得到数据库锁定错误
解决方法:
考虑删除无限时True循环并使用connection cursor执行和获取语句:
conn = sqlite3.connect(db_path, isolation_level=None ,timeout=30000)
print("Opened database successfully")
cur = conn.cursor()
cur.execute("select * from 'actions' where 'owner'='1';")
for data in cur.fetchall()
print(data)
if (data is None):
print('nothing @ '+str(time.time()))
with open(wd_file_path, 'w') as file_:
file_.write("{'pid'='"+str(pid)+"','time'='"+str(time.time())+"'}")
time.sleep(0.5)
else:
#print(data)
r = requests.post("http://127.0.0.1/json.php", data={'act': data[2], 'val': data[4]})
#if (r.text == '1'):
cur.execute("delete from 'actions' where 'rid'="+str(data[0])+";")
conn.commit()
#else:
# print(r.text)
cur.close()
conn.close()
内容总结
以上是互联网集市为您收集整理的python – sqlite3数据库被锁定全部内容,希望文章能够帮你解决python – sqlite3数据库被锁定所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。