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

时间:2017-11-07 16:57:00

标签: python mysql multithreading thread-safety pymysql

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

种族是否可以在所有线程中使用来自相同pymysql连接的相同游标?

种族可以自由地使用来自同一连接的每个线程的不同游标吗?

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

1 个答案:

答案 0 :(得分:2)

感谢El Ruso的第一个方向

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

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

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

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