Python MySQLdb游标上的提交是否会影响另一个游标中正在进行的事务?

时间:2012-05-09 08:34:56

标签: python mysql google-app-engine mysql-python google-cloud-sql

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

提前感谢任何建议。

2 个答案:

答案 0 :(得分:4)

可能。 MySQLdb指定threadsafety - 属性为1,这意味着您不应在多个线程上共享连接(以及游标),而无需手动同步。

你应该更好地使用某种形式的连接池。

答案 1 :(得分:1)

在Google Cloud SQL中,每个数据库连接一次只能有一个游标。在服务器端,每个连接有一个数据结构,用于跟踪当前事务/查询。如果你有多个游标,它们会相互踩踏。

我建议在每个http请求的开头打开一个连接,然后在最后关闭它。这是some sample code