WSGI Python 应用的锁定 SQLite 数据库错误
我在我的网页应用里遇到了一些问题,想用ajax发送多个POST请求来访问数据库,数据库是用sqlite和mod-wsgi搭建的。请求一个函数的时候没问题,但一旦调用另一个函数,就开始出现“数据库被锁定”的错误。我试过把变量设置为全局的,然后在两个函数里访问它们,也试过在每个函数里打开和关闭数据库,但都没用。
如果代码里只有一个应用函数,正确的数据库连接方式是什么呢?是用线程吗?还是用持久连接?
我之前用过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
我在ubuntu 10上运行apache 2.2,使用libapache2-modwsgi和python 2.7。
1 个回答
0
在SQLite的文档中,有关于多个进程同时访问的警告。
http://www.sqlite.org/faq.html#q5
这些信息是在mod_wsgi的讨论组中提供的,那里也有人问过这个问题,不过我在这里补充一下。
这个问题可能会出现,因为Apache/mod_wsgi支持单进程和多进程的配置。很可能提问者使用的是多进程配置。还有:
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
可以查看Apache/mod_wsgi的进程和线程模型的描述。