Подключение к MySQL в Python

Я использую MySQL в бэкенде, написанном на Python без ORM. У меня есть куча классов, которые предоставляют услуги доступа к базе данных, используя mysqlconnector, и эти услуги могут использоваться одним и тем же или разными маршрутами API. Они предоставляются в виде функций-членов с использованием одного объекта MySQLConnection и MySQLCursor, который инициализируется в конструкторе и затем передается по кругу.

Можно ли сделать это потокобезопасным, не изменяя дизайн слишком сильно, т.е. не требуя открытия нового соединения для каждой функции-члена, которая обращается к базе данных?

К вашему сведению - этот вопрос был задан в 2017 году . На данный момент ни одна из двух самых популярных библиотек mysqlclient и mysql-connector-python не поддерживает реентерабельные Connections.

В зависимости от того, что вы подразумеваете под "слишком большой" работой, в python довольно просто добавить свою собственную постоянную блокировку для защиты от нескольких потоков, пытающихся взаимодействовать с одним и тем же объектом соединения.

Вернуться на верх