Стоит ли определить connection и cursor как self переменные?
Python, mysql-connector-python.
Надоело постоянно таскать подключения mysql по небольшим внутренним функциям.
Можно ли сделать как то так?
...
def some_finc():
q = "some query to mysql"
self.cursor.execute(q)
self.connection.commit()
with connect(...) as self.connection:
with self.connection.cursor() as self.cursor:
some_func()
Или же почему этого делать не следует, и стоит продолжать делать как то так?
def some_finc(conn, cur):
q = "some query to mysql"
cur.execute(q)
conn.commit()
with connect(...) as connection:
with connection.cursor() as cursor:
some_func(connection, cursor)
Ответы (1 шт):
Автор решения: Danila Kartovitskii
→ Ссылка
Можно, но
Это может вызвать проблемы с утечкой ресурсов, если соединение не будет корректно закрыто. Также, при необходимости многопоточного доступа, это может вызвать конфликты.
Относительно использования self для connection и cursor, это зависит от того, как вы планируете использовать их внутри класса. Если эти объекты будут часто использоваться в методах класса, то можно сделать так как вы предлагаете.