如果我有相同数据库连接生成的多个游标(例如,每个游标位于不同的线程中),则对一个游标(例如Python:cursor.execute('COMMIT'))的提交会影响正在进行的事务同一连接中的另一个游标?如果是这样,我是否应该每个数据库连接只有一个游标,以避免像这样的交叉游标问题? (另外,如果您知道,这是否也适用于Google Cloud SQL?)
提前感谢任何建议。
答案 0 :(得分:4)
可能。 MySQLdb
指定threadsafety
- 属性为1,这意味着您不应在多个线程上共享连接(以及游标),而无需手动同步。
你应该更好地使用某种形式的连接池。
答案 1 :(得分:1)
在Google Cloud SQL中,每个数据库连接一次只能有一个游标。在服务器端,每个连接有一个数据结构,用于跟踪当前事务/查询。如果你有多个游标,它们会相互踩踏。
我建议在每个http请求的开头打开一个连接,然后在最后关闭它。这是some sample code。