当前位置: 芃睿知识网 > 建站问题

SQLAlchemy and SQLite: database is locked怎么处理

知识网2021年10月20日 22:42原创

我有一个python脚本,它使用了最新的sqlalchemy。当我使用sqlite时,只有sqlite,其他db工作正常,我得到以下错误:

sqlalchemy.exc.OperationalError: (OperationalError) database is locked u'SELECT blabla....

示例从我的代码(简化)中,我有以下几种方法来选择、更新和删除内容:

class MyDb(object):
    def __init__(self):
        engine = create_engine(&sqlite:///file&, poolclass=NullPool, pool_threadlocal=True)
        engine.pool_size=1
        engine.pool_timeout = 60
        self.sess = sessionmaker(bind=engine)

    def del_stuff(self):
        sess = self.sess()
        sess.query(Stuff).delete()
        try:
            sess.commit()
        except:
            sess.rollback()

    def set_stuff(self, id, bar):
        sess = self.sess()
        sess.query(Foo).get(id).bar = bar
        try:
            sess.commit()
        except:
            sess.rollback()

我该如何处理呢?网络上面资料很少,突然碰到的这个问题,中文的答案更是少的可怜,谁能帮忙一下解答一下呢?

本文章网址:https://www.shsongjiang.com/p2/

很赞哦!(0)

发表高见 (请对您的言行负责)
2021年10月17日 23:47,回答 by_淘气宝宝:
其实这个答案很简单,是sqlalchemy不允许同时连接数据库,特别是识别到同时操作一个表的时候,会将数据库锁住,不让操作了,这时候不论你怎么操作都会报这个错误。 答案是:只需要你把你连接数据库的sqlitebrowser或者其他客户端关闭即可。

©芃睿知识网 版权所有 2012-2022 www.shsongjiang.com

备案号:赣ICP备2022001527号-1