【问题标题】:Getting "Invalid cursor state (0)" when running concurrent requests (SQLAlchemy & wsgi/python)运行并发请求时获取“无效游标状态 (0)”(SQLAlchemy 和 wsgi/python)
【发布时间】:2023-04-01 13:43:02
【问题描述】:

我在 WSGI python web 应用程序中使用 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 基于 Paste。

【问题讨论】:

  • 想知道您是否曾就如何解决这种情况得出结论。我遇到了同样的事情,在执行查询之后,任何以下查询都会给出错误Invalid cursor state (0) (SQLExecDirectW)。此外,我注意到第一次似乎没有失败的查询执行返回的 ResultProxy 的行数为 -1。
  • 我确实解决了它,但不记得如何解决了。很抱歉,我忽略了在这里发布答案。

标签:
python
sql-server
sqlalchemy
freetds
database-concurrency