0

如果我有多个从同一个数据库连接生成的游标(例如,每个游标在不同的线程中),一个游标上的提交(例如在 Python 中:cursor.execute('COMMIT'))是否会影响另一个游标上正在进行的事务相同的连接?如果是这样,我是否应该总是每个数据库连接只有一个游标,以避免这样的交叉游标问题?(另外,如果您知道,这是否也适用于 Google Cloud SQL?)

提前感谢您的任何建议。

4

2 回答 2

4

大概。MySQLdb将 - 属性指定threadsafety为 1,这意味着您不应该在没有手动同步的情况下在多个线程上共享连接(以及游标)。

你最好使用某种形式的连接池。

于 2012-05-09T08:45:02.440 回答
1

在 Google Cloud SQL 中,每个数据库连接一次应该只有一个光标。在服务器端,每个连接都有一个数据结构来跟踪当前的事务/查询。如果您有多个光标,它们将相互踩踏。

我建议在每个 http 请求的开头打开一个连接并在最后关闭它。这是一些示例代码

于 2012-05-14T16:26:35.637 回答