Поток соединения pymysql безопасен? Безопасен ли поток курсора pymysql?

У меня есть структура данных очереди, где несколько потоков потребляют элементы, каждый поток собирается записывать в базу данных, используя PyMySQL, никакой другой синхронизации между потоками не требуется.

Может ли гонка использовать один и тот же курсор из одного и того же соединения pymysql во всех потоках?

Свободна ли гонка для использования разных курсоров для одного потока из одного и того же соединения?

(конечно, использовать несколько соединений в нескольких потоках - это нормально, потому что в этом случае нет общего ресурса, меня это не интересует)

1 ответ

Спасибо El Ruso за одно направление

Я нашел ответ в источнике pymysql после того, как понял, что в DBAPI2 есть спецификация, указывающая, как ответить на этот вопрос в зависимости от реализации. В случае PyMySQL это означает, что он не является потокобезопасным ни для соединений, ни для курсоров.

https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/__init__.py Line

PyMySQL is threadsafe = 1 означает: потоки могут совместно использовать модуль, но не соединения.

(Прочитайте спецификацию PEP-0249 http://legacy.python.org/dev/peps/pep-0249/)

Другие вопросы по тегам