반응형
컨텍스트 관리자 커서에 대한 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
반응형
'programing' 카테고리의 다른 글
ASP에서 인증되지 않은 경우 로그인으로 리디렉션합니다.NET 코어 (0) | 2023.08.29 |
---|---|
BLOB 및 CLOB 설명 (0) | 2023.08.29 |
jquery를 닫으려면 외부 메뉴를 클릭 (0) | 2023.08.24 |
커서가 Javascript/jquery를 사용하는 텍스트 삽입 (0) | 2023.08.24 |
BeautifulSoup을 사용하여 노드의 자식을 찾는 방법 (0) | 2023.08.24 |