Как подключиться к MySQL с Python через ODBC - PullRequest
1 голос
/ 12 января 2011

Я использую mysql, pyodbc, python 2.7, загруженные на Fedora 14 x64.

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

Сообщение об ошибке:

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.

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Сравнение 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() 

(не проверено)

1 голос
/ 08 января 2015

источник: 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()

The *Функция 1009 * имеет два параметра:

  1. maxrows ограничивает максимальное количество возвращаемых строк.
  2. how: возвращает кортеж, когда how = 0, и возвращает словарь, когдаhow = 1.

Например, result.fetch(maxrows=5, how=1) возвращает массив (максимальный размер: 5) словарей, где ключ - это имя столбца, а значение - значение столбца.

1 голос
/ 01 ноября 2013

Файл "C: \ Python26 \ lib \ site-packages \ MySQLdb__init __. Py", строка 19, в import _mysql ImportError: Ошибка загрузки DLL:% 1 не является допустимым приложением Win32.

, если Python26&& windows нам нужно скачать 3 файла: libguide40.dll, libmmd.dll, libmySQL.dll поместите 3 файла в C: \ Python26 \ Lib \ site-packages и также поместите 3 файла в C: \ Windows \ system32, а затем перезапуститеsystem

Если в Python27 && Windows при настройке модуля, будьте внимательны с версией MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.4.win32-py2.7.exe одна из 2-х версий вам нужна

...