我有队列数据结构,其中多个线程消耗项目,每个线程将使用PyMySQL写入数据库,线程之间不需要其他同步。
种族是否可以在所有线程中使用来自相同pymysql连接的相同游标?
种族可以自由地使用来自同一连接的每个线程的不同游标吗?
(当然在多个线程中使用多个连接是可以的,因为那个案例没有共享资源,我对这种情况没兴趣)
答案 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)