【问题标题】:locked SQLite database errors with WSGI python app使用 WSGI python 应用程序锁定 SQLite 数据库错误
【发布时间】:2011-07-04 04:30:40
【问题描述】:

我在使用 sqlite 和 mod-wsgi 对访问我的 Web 应用程序中的数据库的函数进行多个 ajax POST 调用时遇到问题。我向一个函数发出请求没有问题,但是一旦我调用另一个函数,我就开始收到“数据库已锁定”错误。我尝试将变量设置为全局变量并仅在两个函数中访问它们,以及在每个函数中打开和关闭数据库,但无济于事。

如果您的代码中只有一个应用程序函数,那么与数据库交互的正确方法是什么?线程?持久连接?

我以前使用过 Django,但想要在我的本地计算机上运行这个简单的应用程序。

相关部分代码为:

con = sqlite3.connect("/var/www/Knowledge/eurisko.sqlite")
con.row_factory = sqlite3.Row
cursor = con.cursor()
cursor.execute("update notes_content set c1content=?, c2timestamp=?
where c0title=?", [content, timestamp, title])
con.commit()
cursor.close()
con.close()

完整文件在这里:http://pastebin.com/7yuiZFi2

我正在使用 libapache2-modwsgi 和 python 在 ubuntu 10 上运行 apache 2.2 2.7.

【问题讨论】:

  • 想发布完整的回溯吗?

标签: python wsgi


【解决方案1】:

请参阅 SQLite 文档中有关来自多个进程的并发访问的警告。

http://www.sqlite.org/faq.html#q5

此信息在 mod_wsgi 列表中提供,其中也提出了问题,但在此处跟进。

这可能是个问题,因为 Apache/mod_wsgi 支持单进程和多进程配置。可能 OP 正在使用多进程配置。另见:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

用于 Apache/mod_wsgi 进程/线程模型的描述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-09
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多