pymysql连接线程安全吗?pymysql游标线程安全吗?

Jai*_*ero 5 python mysql multithreading thread-safety pymysql

我有一个队列数据结构,其中多个线程消耗项目,每个线程将使用 PyMySQL 写入数据库,线程之间不需要其他同步。

在所有线程中使用来自同一个 pymysql 连接的同一个游标是否可以自由竞争?

来自同一连接的每个线程使用不同的游标是否可以自由竞争?

(当然在多线程中使用多个连接是可以的,因为在这种情况下没有共享资源,我对这种情况没有兴趣)

Jai*_*ero 5

感谢 El Ruso,为我们指明了方向

在了解 DBAPI2 有一个规范指示如何根据实现来回答这个问题后,我在 pymysql 源代码中找到了答案。对于 PyMySQL,这意味着它对于连接和游标都不是线程安全的。

https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/ init .py#L40

PyMySQL 是线程安全的 = 1 意味着:线程可以共享模块,但不能共享连接。

(阅读 PEP-0249 规范http://legacy.python.org/dev/peps/pep-0249/#threadsafety