簡體   English   中英

如何通過odbc與python連接到mysql

[英]How connect to mysql with python via odbc

我在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

python腳本是:

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")

Err Msg:

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 ,你應該有一個動態庫在這里(我認為)。

為什么不使用直接的mysql連接 (沒有odbc)?

import _mysql

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

(未測試)

導入_mysql文件“C:\\ Python26 \\ lib \\ site-packages \\ MySQLdb__init __。py”,第19行ImportError:DLL加載失敗:%1不是有效的Win32應用程序。

如果Python26 && windows我們需要下載3個文件:libguide40.dll,libmmd.dll,libmySQL.dll將3個文件放到C:\\ Python26 \\ Lib \\ site-packages中,並將3個文件放到C:\\ Windows \\ system32然后重啟你的系統

如果在設置模塊時使用Python27 && windows,請注意版本MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.4.win32-py2.7.exe其中一個版本是你需要

來源: http//mysql-python.sourceforge.net/MySQLdb.html#some-mysql-examples

代碼測試:

import _mysql

conn=_mysql.connect(host="localhost", user="root", passwd="***", db="test")
conn.query("select * from test_table")
result = conn.use_result()

print result.fetch_row()

fetch_row()函數有兩個參數:

  1. maxrows限制返回的最大行數。
  2. how :當how = 0時返回一個元組,當how = 1時返回一個字典。

例如, result.fetch(maxrows=5, how=1)返回字典的數組(最大值:5),其中鍵是列名,值是列值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM