如何通过odbc通过python连接到mysql

如何通过odbc通过python连接到mysql,python,mysql,pyodbc,unixodbc,Python,Mysql,Pyodbc,Unixodbc,我正在运行mysql、pyodbc和加载在Fedora14x64上的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.

我正在运行mysql、pyodbc和加载在Fedora14x64上的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)')
错误消息:

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.
文件“C:\Python26\lib\site packages\MySQLdb\\uuuuu init\uuuuuu.py”,第19行,在
导入mysql
ImportError:DLL加载失败:%1不是有效的Win32应用程序。

比较
odbcinst.ini
和您的
odbc.ini
odbc.ini
中为驱动程序显示一个奇数值,您应该在这里有一个动态库(我想)

你为什么不(没有odbc)?:


(未测试)

比较
odbcinst.ini
和您的
odbc.ini
odbc.ini
中显示驱动程序的奇数值,您应该在这里有一个动态库(我认为)

你为什么不(没有odbc)?:

(未测试)

文件“C:\Python26\lib\site packages\MySQLdb\uuuuu init\uuuuuu.py”,第19行,在 导入mysql ImportError:DLL加载失败:%1不是有效的Win32应用程序

如果Python26&&windows 我们需要下载3个文件:libguide40.dll、libmmd.dll、libmySQL.dll 将这3个文件放在C:\Python26\Lib\site包中 并将这3个文件放到C:\Windows\system32 然后重新启动系统

如果Python27&&windows 设置模块时,请注意版本 MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.4.win32-py2.7.exe 其中一个版本是您需要文件“C:\Python26\lib\site packages\MySQLdb\uuuuu init\uuuuu.py”,第19行,在 导入mysql ImportError:DLL加载失败:%1不是有效的Win32应用程序

如果Python26&&windows 我们需要下载3个文件:libguide40.dll、libmmd.dll、libmySQL.dll 将这3个文件放在C:\Python26\Lib\site包中 并将这3个文件放到C:\Windows\system32 然后重新启动系统

如果Python27&&windows 设置模块时,请注意版本 MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.4.win32-py2.7.exe 两个版本之一是您需要

来源:

代码测试:

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()
函数有两个参数:

  • maxrows
    限制返回的最大行数
  • how
    :how=0时返回元组,how=1时返回字典
  • 例如,
    result.fetch(maxrows=5,how=1)
    返回字典数组(最大大小:5),其中键是列名,值是列值。

    来源:

    代码测试:

    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()
    函数有两个参数:

  • maxrows
    限制返回的最大行数
  • how
    :how=0时返回元组,how=1时返回字典

  • 例如,
    result.fetch(maxrows=5,how=1)
    返回一个字典数组(最大大小:5),其中键是列名,值是列值。

    上面是与缺陷直接连接的。好的,我的cxn字符串是什么?我也得到了类似的东西:cxn=pyodbc('DSN=MySQL')。我还希望保持代码的灵活性,以使用sqlite、MySQL和sybase。添加了一个代码示例。为了灵活性,您有一个查询,4行代码,所以..@RC,谢谢您的帮助!我有Win XPx64和Fed 14通过ODBC的连接字符串。在FEd 14上,通过MySQlDb直接连接。故障是在XPx64上使用py2.6直接连接,它已安装,但不想运行。上面是带有缺陷的直接连接。好的,我的cxn字符串是什么?我也得到了类似的东西:cxn=pyodbc('DSN=MySQL')。我还希望保持代码的灵活性,以使用sqlite、MySQL和sybase。添加了一个代码示例。为了灵活性,您有一个查询,4行代码,所以..@RC,谢谢您的帮助!我有Win XPx64和Fed 14通过ODBC的连接字符串。在FEd 14上,通过MySQlDb直接连接。故障是在XPx64上使用py2.6直接连接,它已安装但不想运行。
    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()