본문 바로가기
MySql

MySQL ODBC를 통해 Python으로 mysql에 연결하는 방법

by 베이스 공부 2020. 10. 24.
반응형

Fedora 14 x64에로드 된 mysql, pyodbc, python 2.7을 실행 중입니다.

Odbcinst.ini는 다음과 같습니다.

# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
#[PostgreSQL]
#Description    = ODBC for PostgreSQL
#Driver     = /usr/lib/psqlodbc.so
#Setup      = /usr/lib/libodbcpsqlS.so
#Driver64   = /usr/lib64/psqlodbc.so
#Setup64    = /usr/lib64/libodbcpsqlS.so
#FileUsage  = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
#Driver     = /usr/lib/libmyodbc5.so
#Setup      = /usr/lib/libodbcmyS.so
Driver64    = /usr/lib64/libmyodbc5.so
Setup64     = /usr/lib64/libodbcmyS.so
FileUsage   = 1

Odbc.ini는 다음과 같습니다.

[MySQL]
Driver = MySQL
Database = mysql
Server = localhost
Socket = /var/lib/mysql/mysql.sock
User = rooter
Password = sshh

Mysql.sock이 비어 있습니까? /var/lib/mysql/mysql.sock에는 0.B가 있습니다.

파이썬 스크립트는 다음과 같습니다.

import pyodbc

#pyodbc.pooling = False 
conn = pyodbc.connect('DRIVER={MySQL};SOCKET=/var/lib/mysql/mysql.sock;UID=rooter;PWD=sshh') 

csr = conn.cursor()
csr.execute("SET GLOBAL event_scheduler = ON")
csr.close()

conn.close() 
del csr

위의 스크립트와 연결할 수없는 것 같습니다. isql을 사용하면 연결됩니다!

MyERROR 메시지 :

Traceback (most recent call last):
  File "/CCX/Py/MySql Event OFF.py", line 4, in <module>
    conn = pyodbc.connect('DRIVER={MySQL};SOCKET=/var/lib/mysql/mysql.sock;UID=rooter;PWD=sshh') 
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')

Win XPx64에서

#cxn = MySQLdb.connect (host = "localhost",user="rooter",passwd ="sshh")

오류 메시지 :

File "C:\Python26\lib\site-packages\MySQLdb\__init__.py", line 19, in <module>
    import _mysql
ImportError: DLL load failed: %1 is not a valid Win32 application.

 

해결 방법

 

odbcinst.ini odbc.ini 를 비교하면 odbc.ini 의 드라이버에 대해 홀수 값이 표시됩니다. 여기에 동적 라이브러리가 있어야합니다. 생각한다).


import _mysql

conn = _mysql.connect(host="localhost", user="rooter", 
                      password="sshh", db="mysql") 
conn.query("SET GLOBAL event_scheduler = ON")
conn.close() 

(검증되지 않은)

 

참조 페이지 https://stackoverflow.com/questions/4665342

 

 

반응형

댓글