Подключение к MS Access в Python - PullRequest
0 голосов
/ 08 июня 2018

Я пробовал множество примеров из Интернета, чтобы включить подключение MS Access к моему проекту Python без успеха

У меня есть проект Python в Eclipse с Anaconda, и мой код:

import win32com.client
import pyodbc

def ado():
 '''
  connect with com dispatch objs
  '''
  conn = win32com.client.Dispatch(r'ADODB.Connection')
  DSN = ('PROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = ' + db +  ';')
  conn.Open(DSN)

  rs = win32com.client.Dispatch(r'ADODB.Recordset')
  strsql = "select * from Empresas"
  rs.Open(strsql, conn, 1, 3)
  t = rs.GetRows()
  conn.Close()
  return t

def odbc():
  '''
  connects with odbc
  '''        
  constr = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=' + db
  conn = pyodbc.connect(constr, autocommit=True)
  cur = conn.cursor()
  strsql = "select * from Empresas"
  cur.execute(strsql)
  t = list(cur)
 conn.close()
 return t

 if __name__ == '__main__':

  db = 'D:/EMP001/2018/example.mdb'
  data1 = ado()
  data2 = odbc()

С данными1 я получаю следующее сообщение:

pywintypes.com_error: (-2147352567, 'Ocurrió una excepción.', (0, 'ADODB.Connection', 'No se encontró el proofedor especificado. EsВозможная очередь не установлена. Установлено правильно. ',' C: \ WINDOWS \ HELP \ ADO270.CHM ', 1240655, -2146824582), Нет)

И с данными2 это одно:

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft] [Администратор управления контентом ODBC] Нет особых требований к данным и нет особых данных (0) (SQLDriverConnect)')

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 21 июля 2018

Возможно, у вас есть 32-битный доступ (Office) и 64-битный Python.Как вы знаете, 32-битные и 64-битные полностью несовместимы.Вам нужно установить 32-разрядный Python или обновить Access (Office) до 64-разрядного, и тогда он будет работать.Вкратце, вы не можете подключить (на уровне приложения) 64-разрядный Python.exe к 32-разрядному драйверу MS Access ODBC (odbcad32.exe), поскольку данные просто хранятся и обрабатываются по-разному для разных типов.Однако при обратной совместимости рекомендуется работать с наименьшим общим знаменателем, поскольку 64-разрядная ОС может запускать 32-разрядные приложения, а программы одного уровня могут «общаться» друг с другом.Пожалуйста, посмотрите на URL-адрес ниже для всех деталей.

https://datatofish.com/how-to-connect-python-to-ms-access-database-using-pyodbc/

0 голосов
/ 08 июня 2018

В обоих случаях в сообщении об ошибке говорится, что не удается найти драйвер (ODBC) или поставщика (ADO).

В ODBC вы уверены, что этот драйвер установлен?

Вы можете получить список доступных драйверов, используя pyodbc.drivers()

, например, в моем случае я читаю данные MS Access, используя этот драйвер Microsoft Access Driver (*.mdb)

...