2007年02月06日 星期二 20:12
最近写一个多线程程序,发现有时会出现如下异常: OperationalError: database is locked 我使用SQLite3,不知会是什么原因导致这个异常。我在测试中发现,不论是哪里的cur.execute()语句都有可能弹出这个异常。出现这个异常之后过一会自己就又好了,这个时间大概是10秒之下,因为是多线程程序,具体多少秒我也不知道。 谢谢。 -- 从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。 片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就.. 我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。 我愿为那一刻的温暖去拼,可是谁愿意接受? 欢迎访问偶的博客: http://blog.csdn.net/gashero
2007年02月06日 星期二 20:22
sqlite对多线程支持的不是很好。我们在用VC开发时也经常碰到问题。有一个方案 是多线程使用同一数据库链接。 > 最近写一个多线程程序,发现有时会出现如下异常: > OperationalError: database is locked > 我使用SQLite3,不知会是什么原因导致这个异常。我在测试中发现,不论是哪里的cur.execute()语句都有可能弹出这个异常。出现这个异常之后过一会自己就又好了,这个时间大概是10秒之下,因为是多线程程序,具体多少秒我也不知道。 > 谢谢。 -- feihu <feihu.list在gmail.com>
2007年02月06日 星期二 20:24
没有听懂如何实现,但是如果在Python中多个线程共享同一个数据库连接会抛出一个ProgrammingError。说是不允许操作另外一个线程中创建的连接。 -- 从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。 片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就.. 我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。 我愿为那一刻的温暖去拼,可是谁愿意接受? 欢迎访问偶的博客: http://blog.csdn.net/gashero
2007年02月06日 星期二 22:17
这个是会这样的,所以在对它修改的时候总是要进行同步的。 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070206/55caf57d/attachment.html
2007年02月06日 星期二 22:20
cur.execute()抛出异常只是在insert update delete这3个语句是会发生,selete并不会有问题。问题的关键是你对数据库文件多线程修改时没有同步。 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070206/ac8c580d/attachment.html
2007年02月06日 星期二 23:49
还是没有听的很懂,那是不是需要在INSERT、UPDATE、DELETE这三个语句执行时也加个锁? -- 从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。 片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就.. 我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。 我愿为那一刻的温暖去拼,可是谁愿意接受? 欢迎访问偶的博客: http://blog.csdn.net/gashero
2007年02月06日 星期二 23:52
是的,我在那些地方加锁同步以后就好了。 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://python.cn/pipermail/python-chinese/attachments/20070206/36247afe/attachment.html
2007年02月07日 星期三 08:48
多线程加锁是肯定的, 但是如果确定任意时刻只有一个线程访问,可以在连接时,加一个选项 self.con = sqlite.connect(self.db_file, check_same_thread=False) On 2/6/07, 3751 <lwm3751在gmail.com> wrote: > 是的,我在那些地方加锁同步以后就好了。 > -- LinuX Power
Zeuux © 2025
京ICP备05028076号