pyodbc и mySQL - PullRequest
       22

pyodbc и mySQL

6 голосов
/ 21 октября 2010

Я не могу подключиться к mySQl db с помощью pyodbc.

Вот фрагмент моего сценария:

import pyodbc
import csv

cnxn = pyodbc.connect("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost;DATABASE=mydb; UID=root; PASSWORD=thatwouldbetelling;") 
crsr = cnxn.cursor()

with open('C:\\skunkworks\\archive\\data\\myfile.csv','r') as myfile:
    rows = csv.reader(myfile, delimiter=',', quotechar='"')
    for row in rows:
        insert_str = 'INSERT into raw_data VALUES(something, something)'
        print insert_str
        #crsr.execute(insert_str)
    cnxn.commit()
    myfile.close()

Я получаю эту ошибку в строке pyodbc.connect ():

pyodbc.Error: ('IM002', '[IM002] [Microsoft] [Диспетчер драйверов ODBC] Данные имя источника не найдено и по умолчанию нет указан драйвер (0) (SQLDriverConnectW) ')

У меня есть еще один вопрос относительно этой ошибки (и сценариев Python в целом). Когда я запускаю это как скрипт, он молча завершается неудачей (я ожидал трассировки стека). Я должен ввести каждую строку вручную, чтобы найти, где произошла ошибка.

Сейчас я немного ленив (без обработки исключений) - это нормальное поведение скрипта Python без обработки исключений, чтобы молча терпеть неудачу?

[Изменить]

Я не использую mysqldb, потому что я уже использую pyodbc для извлечения моих данных из другого источника (MS Access). Ладно, не очень хорошая причина - но я уже борюсь с pyodbc, и мне не очень хочется бороться с другой библиотекой / модулем / пакетом (как бы он ни назывался в Python) для работы «один раз». Я просто хочу переместить мои данные из различных источников данных в среде Windows в mySQl в Linux. Однажды в Linux я вернусь на Terra Firma.

Вот и весь «сценарий». Я просто сохранил приведенный выше код в файл с расширением .py и запускаю python myscript.py в командной строке. Я запускаю это на своей машине XP

Ответы [ 5 ]

2 голосов
/ 16 января 2015

У меня была такая же ошибка, поэтому я просмотрел все версии, которые использовал для соединения.Вот что я выяснил:

Для Python 2.7 32 бита: - pyodbc должен быть 32 бита - драйвер БД должен быть 32 бита.(Microsoft Access тоже должен быть 32-битным)

Для тех, кто использует 64-битную версию.Вы должны проверить, что все тоже 64-битные.

В моем случае я пытался подключиться к БД Oracle и БД Microsoft Access, поэтому мне пришлось сделать так, чтобы следующие компоненты соответствовали версии architechture:

  • pyodbc (MS Access)
  • python
  • cx_Oracle (Oracle диалект для SQLalchemy)
  • Oracle InstantClient Basic (Oracle. Не забудьте создать переменную среды)
  • py2exe (Создание исключительного приложения)
2 голосов
/ 21 октября 2010

Первый , согласно официальным документам , если вы хотите подключиться без создания DSN, вам нужно указать OPTION = 3 в строке подключения:

ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;USER=venu;PASSWORD=venu;OPTION=3;"

Если это не сработает, я дополнительно устраню неполадки, создав DSN.

Второй , ни один Python не должен молчать с ошибкой. Если это тот случай, когда вы запускаете свой скрипт, есть что-то еще не так.

2 голосов
/ 17 апреля 2011

нужно только установить mysql-connector-odbc-3.51.28-win32.msi.

и pyodbc-2.1.7.win32-py2.7.exe.

конечно,вы уже установили MySQL и python 2.7.

пример:

import pyodbc

cndBase = pyodbc.connect("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; PORT=3306;DATABASE=nameDBase; UID=root; PASSWORD=12345;") 
ptdBase = cndBase.cursor()

query_str = 'SELECT* FROM nameTabla;'
rows  = ptdBase.execute(query_str)

for rw in rows:
    print list(rw)`enter code here`
2 голосов
/ 21 октября 2010

MySQLdb (или oursql) и pyodbc имеют одинаковый интерфейс ( DB-API 2 ), только вам не придется сталкиваться с проблемами ODBC, если вы используете первый. Я настоятельно рекомендую вам вместо этого использовать MySQLdb (или oursql).

0 голосов
/ 02 ноября 2016

Это ваше имя водителя верно?

Вы можете проверить имя вашего драйвера в Windows -> Панель управления -> Система и безопасность -> Администрирование -> Источники данных ODBC -> Вкладка драйвера затем скопируйте название реки в первый параметр

как

cnxn = pyodbc.connect("DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=localhost;DATABASE=books; UID=root; PASSWORD=password;")

И моя проблема решена

или вы не можете установить драйвер, и этот шаг прост.

...