我在WSGI python web app中使用SQLAlchemy来查询数据库。如果我执行两个并发请求,则第二个请求会引发异常,SQL Server会声明
[24000] [FreeTDS][SQL Server]Invalid cursor state (0) (SQLExecDirectW)
不幸的是,我似乎无法使用缓存来阻止对数据库的其他请求。有没有其他方法可以解决这个问题?理想情况下使用本机python库(即不依赖于另一个python模块)?
我唯一能想到的是使用线程锁定函数进行数据库查询,但我担心这会降低应用程序的速度。
还有什么可以做的吗?这是配置问题吗?
我在Centos 5.9服务器上使用FreeTDS v0.91,连接到MS SQL Server 2008.
webapp基于粘贴。
答案 0 :(得分:1)
您的两个并发请求是否使用不同的数据库连接? DBAPI连接通常不是线程安全的。在ORM级别,您需要确保使用session per request,以便每个请求都有自己的会话,因此具有专用的DBAPI连接。