Подключение к MySQL в Python
Я использую MySQL в бэкенде, написанном на Python без ORM. У меня есть куча классов, которые предоставляют услуги доступа к базе данных, используя mysqlconnector
, и эти услуги могут использоваться одним и тем же или разными маршрутами API. Они предоставляются в виде функций-членов с использованием одного объекта MySQLConnection
и MySQLCursor
, который инициализируется в конструкторе и затем передается по кругу.
Можно ли сделать это потокобезопасным, не изменяя дизайн слишком сильно, т.е. не требуя открытия нового соединения для каждой функции-члена, которая обращается к базе данных?
К вашему сведению - этот вопрос был задан в 2017 году . На данный момент ни одна из двух самых популярных библиотек mysqlclient
и mysql-connector-python
не поддерживает реентерабельные Connection
s.
В зависимости от того, что вы подразумеваете под "слишком большой" работой, в python довольно просто добавить свою собственную постоянную блокировку для защиты от нескольких потоков, пытающихся взаимодействовать с одним и тем же объектом соединения.