I tried a lot of examples from internet to include a MS Access connection to my python project without sucess
I have my python project in Eclipse with Anaconda, and my code is:
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()
With data1 I get the following message:
pywintypes.com_error: (-2147352567, 'Ocurrió una excepción.', (0, 'ADODB.Connection', 'No se encontró el proveedor especificado. Es posible que no esté instalado correctamente.', 'C:\\WINDOWS\\HELP\\ADO270.CHM', 1240655, -2146824582), None)
And with data2 this one:
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado (0) (SQLDriverConnect)')
Any ideas?
You probably have 32-bit Access (Office) and 64-bit Python. As you know, 32-bit and 64-bit are completely incompatible. You need to install 32-bit Python, or upgrade Access (Office) to 64-bit, and then it will work. Succinctly put, you cannot connect (at application level) a 64-bit Python.exe to a 32-bit MS Access ODBC driver (odbcad32.exe) since data is stored and processed differently between the types. However with backwards compatibility, it is advised to work in lowest common denominator as a 64-bit OS can run 32-bit applications and same level programs can "talk" to each other. Please take a look at the URL below for all details.
https://datatofish.com/how-to-connect-python-to-ms-access-database-using-pyodbc/
In both cases, the error message says it cannot find the driver (ODBC) or the provider (ADO).
In ODBC, are you sure that this driver is installed?
You can have a list of available drivers using pyodbc.drivers()
for example, in my case, I read MS Access data using this driver Microsoft Access Driver (*.mdb)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.