Стоит ли определить 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, это зависит от того, как вы планируете использовать их внутри класса. Если эти объекты будут часто использоваться в методах класса, то можно сделать так как вы предлагаете.

→ Ссылка