programing

컨텍스트 관리자 커서에 대한 Mariadb Python 모듈 유형 암시

batch 2023. 8. 24. 21:55
반응형

컨텍스트 관리자 커서에 대한 Mariadb Python 모듈 유형 암시

나는 이것에 대한 올바른 타이핑을 식별할 수 없습니다.이것이 무엇인지 어떻게 알 수 있습니까?

from contextlib import contextmanager

import mariadb


@contextmanager
def mariadb_con(
        user: str,
        password: str,
        host: str,
        database: str,
        port: int,
        commit: bool = False
        ) -> mariadb.connection.cursor:
    con = mariadb.connect(
            user=user,
            password=password,
            host=host,
            database=database,
            port=port
            )
    cur = con.cursor()
    yield cur
    if commit is True:
        con.commit()
    cur.close()
    con.close()

이 입력과 함께 context_manager를 사용하려고 하면 다음과 같이 반환됩니다.

AttributeError: module 'mariadb' has no attribute 'connection'

놀고 난 후에 다음과 같은 것을 발견했습니다.

mariadb._mariadb.connection.cursor
<method 'cursor' of 'mariadb.connection' objects>

연결 클래스의 커서 메서드인 것 같습니다.

인쇄한 후에는 다음과 같이 올바르게 표시됩니다.

print(type(mariadb._mariadb.connection.cursor))
<class 'method_descriptor'>

그런 다음 컨텍스트 관리자에 추가했습니다.아마도 이것이 오해라면 더 많은 경험을 가진 사람이 나에게 말할 수 있을 것입니다.

from contextlib import contextmanager
from typing import Generator

import mariadb


@contextmanager
def mariadb_con(
        user: str,
        password: str,
        host: str,
        database: str,
        port: int,
        commit: bool = False
        ) -> Generator[mariadb._mariadb.connection.cursor, None, None]:
    con = mariadb.connect(
            user=user,
            password=password,
            host=host,
            database=database,
            port=port
            )
    cur = con.cursor()
    yield cur

언급URL : https://stackoverflow.com/questions/67352258/mariadb-python-module-type-hinting-for-contextmanager-cursor

반응형