Pyodbc ошибка источник данных не найден и не указан драйвер по умолчанию парадокс

Я пытаюсь использовать pyobdc для чтения данных из базы данных paradox, и я продолжаю получать следующую ошибку при попытке подключиться к базе данных:

pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Я попытался создать новые DNS-ссылки для базы данных, но это не помогло, что так когда-либо.

мои системные ссылки выглядят так:

This is what the system DNS looks like

мой код:

import os
import sys
import time
import pyodbc

LOCATION = "c:UsersMarcelloDesktopDATAScorMonitor.db"

cnxn = pyodbc.connect(r"Driver={{Microsoft Paradox Driver (*.db )}};Fil=Paradox 5.X;DefaultDir={0};Dbq={0}; CollatingSequence=ASCII;")
cursor = cnxn.cursor()
cursor.execute("select last, first from test")
row = cursor.fetchone()
print row

3 ответов


две мысли о том, что проверить:

1) Ваша строка подключения неправильная. Существует способ получить известную хорошую строку подключения непосредственно из программы администратора ODBC (взято изhttp://www.visokio.com/kb/db/dsn-less-odbc). Эти инструкции предполагают, что вы используете MDB, но тот же процесс будет работать для файла paradox

  • на обычном клиентском ПК откройте Панель управления - > Администрирование - > источники данных.
  • выберите Вкладка файл DSN и нажмите кнопку Добавить.
  • выберите соответствующий драйвер (например, " драйвер Microsoft Access (*.mdb)") и нажмите кнопку Далее
  • Нажмите кнопку Обзор и выберите, куда вы хотите сохранить .dsn-файл (это временный файл, который вы собираетесь удалить позже).
  • Нажмите кнопку Далее, затем Готово.
  • вам будет показан диалог настройки ODBC для конкретного поставщика. Например, в Microsoft Access может потребоваться только нажать кнопку Выбрать и перейти к существующему.файл mdb перед щелкнуть OK.
  • перейдите к местоположению .dsn-файл и откройте с помощью блокнота.

в файле DSN вы можете увидеть что-то похожее на:

[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:\
DBQ=C:\db1.mdb

чтобы преобразовать вышеизложенное в полное соединение strring:

  1. опустить первую строку [ODBC]
  2. поместите фигурные скобки вокруг всех значений, содержащих пробелы
  3. Поместите все пары name=value в одну строку, разделенную точкой с запятой.

это дает вы полная строка подключения. В этом примере строка выглядит так:

DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;axScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\;DBQ=C:\db1.mdb

2) несоответствие 32/64 бит. У меня были проблемы при смешивании 32-битного python с 64-битными драйверами или наоборот. Вы можете проверить свой интерпретатор Python и драйвер базы данных.


Спасибо за вопрос, у меня была аналогичная проблема, и этот вопрос и ответы помогли мне привести меня к тому, что мне нужно. Проблема для меня оказалась несоответствием между 64-битным Python и 32-битным драйвером ODBC в Windows 10 (как предложил Чад Кеннеди). Я запускаю полностью обновленную версию Fall Creator и установил Microsoft Office Pro 2016. Установщик MS Office по-прежнему по умолчанию использует 32-разрядную установку (не запускайте меня...) -- он не спрашивает об этом во время установки, поэтому представьте мое удивление, когда я обнаружил, что я использую 32-разрядную версию Office. Из-за этого он устанавливает 32-разрядный драйвер ODBC для MS Access. Существует крошечная незаметная ссылка, которую вы можете щелкнуть в диалоговом окне установщика MS Office, чтобы заставить 64-разрядную установку.

64-разрядная установка Python не будет работать с 32-разрядным драйвером ODBC Microsoft Access, и Microsoft не позволит вам установить 64-разрядный драйвер ODBC, если на компьютере установлен 32-разрядный MS Office.

исправление было Удалите MS Office и переустановите его, используя эту крошечную ссылку в диалоговом окне установки, чтобы сказать ему установить как 64-разрядный. Не волнуйтесь, он запоминает все ваши последние файлы и настройки, а также учетные записи электронной почты в Outlook. Как только это было сделано, у меня был 64-битный драйвер ODBC, и мой код Python подключен к базе данных без дальнейших проблем.


ярлык для установки источников данных ODBC может указывать на 32-битные источники данных вместо 64-битных.

перейти к панели управления - > Администрирование - > выберите источники данных (ODBC) - > затем щелкните правой кнопкой мыши на этом файле - > перейти к свойствам - > на вкладке Ярлык - > изменить путь от %windir%\System32\odbcad32.exe до

%windir%\SysWOW64\odbcad32.exe