그래서 순수 파이썬 mysql 클라이언트 구현 인 pymysql
을 사용하는 애플리케이션이 있습니다. 내 대답에 들어가기 전에, 나는 다른 mysql 드라이버를 사용할 수 없다는 사실을 강조하고 싶다.한 가져 오기에서 모듈을 볼 수 있고 다른 모듈에서 보이지 않게하려면 어떻게 할 수 있습니까?
저는 MySQL이 지원하는 데이터 구조를 구현하는 모듈을 가지고 있습니다. 모듈의 요지는 다음과 같습니다.
import pymysql
class Whatever:
def __init__(self):
# Debug statement
print dir(pymysql)
# use the cursors submodule
self.conn = pymysql.connect(... , cursorclass=pymysql.cursors.DictCursor)
이 파일을 내 테스트 파일로 가져 오면 모든 것이 정상입니다. 다음은 print
문장의 출력입니다.
Traceback (most recent call last):
File "xxx.py", line 72, in <module>
passwd='', db='test_db')
File "yyy.py", line 26, in __init__
passwd=passwd, db=db, cursorclass=pymysql.cursors.DictCursor)
AttributeError: 'module' object has no attribute 'cursors'
이 다음에 dir
인쇄의 출력이 될 때 :
['BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'DATETIME', 'DBAPISet', 'DataError',
'DatabaseError', 'Date', 'DateFromTicks', 'Error', 'FIELD_TYPE', 'IntegrityError',
'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER', 'NotSupportedError',
'OperationalError', 'ProgrammingError', 'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Time',
'TimeFromTicks', 'Timestamp', 'TimestampFromTicks', 'VERSION', 'Warning', '__all__',
'__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__',
'__version__', 'apilevel', 'charset', 'connect', 'connections', 'constants', 'converters',
'cursors', 'err', 'escape_dict', 'escape_sequence', 'escape_string', 'get_client_info',
'install_as_MySQLdb', 'paramstyle', 'sys', 'thread_safe', 'threadsafety', 'times', 'util',
'version_info']
내 주요 파일에서 모듈을 가져, 내가 AttributeError
얻을 : 특히, 나는 커서 모듈에 주목 :
['BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'DATETIME', 'DBAPISet',
'DataError', 'DatabaseError', 'Date', 'DateFromTicks', 'Error', 'FIELD_TYPE',
'IntegrityError', 'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER',
'NotSupportedError', 'OperationalError', 'ProgrammingError', 'ROWID', 'STRING', 'TIME',
'TIMESTAMP', 'Time', 'TimeFromTicks', 'Timestamp', 'TimestampFromTicks', 'VERSION',
'Warning', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__',
'__path__', '__version__', 'apilevel', 'charset', 'connect', 'constants', 'converters',
'err', 'escape_dict', 'escape_sequence', 'escape_string', 'get_client_info',
'install_as_MySQLdb', 'paramstyle', 'sys', 'thread_safe', 'threadsafety', 'times',
'version_info']
특히, cursors
은 없다. pymysql.__file__
을 선택하면 두 경우 모두 동일하며, 출력은 다음과 같습니다
__init__.py charset.py connections.py constants converters.pyc cursors.pyc err.pyc times.py util.py
__init__.pyc charset.pyc connections.pyc converters.py cursors.py err.py tests times.pyc util.pyc
이 분명히
cursors.py
있다. 그래서 무엇을 제공합니까?
코드는 실제로 어떻게 생겼습니까? 순환 수입 문제 일 수 있습니다. –