我尝试了很多来自互联网的例子,包括一个没有成功的MS Access项目的MS Access连接
我在Eclipse中使用Anaconda创建了我的python项目,我的代码是:
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()
使用data1,我收到以下消息:
pywintypes.com_error :( -2147352567,'Ocurrióunaexppción。',(0,'ADODB.Connection','Noseencontróelproveedor especificado.Es posible quenoestéinstaladocorrectamente。','C:\ WINDOWS \ HELP \ ADO270.CHM',1240655,-2146824582),无)
对于data2这一个:
pyodbc.InterfaceError:('IM002','[IM002] [Microsoft] [Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y nosepecpecificóningúncontroladorpredeterminado(0)(SQLDriverConnect)')< / p>
有什么想法吗?
答案 0 :(得分:0)
在这两种情况下,错误消息都说它找不到驱动程序(ODBC)或提供程序(ADO)。
在ODBC中,您确定已安装此驱动程序吗?
您可以使用pyodbc.drivers()
例如,就我而言,我使用此驱动程序Microsoft Access Driver (*.mdb)
答案 1 :(得分:0)
您可能拥有32位访问(Office)和64位Python。如您所知,32位和64位是完全不兼容的。您需要安装32位Python,或将Access(Office)升级到64位,然后它才能工作。简而言之,您不能将64位Python.exe(在应用程序级别上)连接到32位MS Access ODBC驱动程序(odbcad32.exe),因为在两种类型之间简单地存储和处理不同的数据。但是,由于具有向后兼容性,建议使用最低公分母来工作,因为64位OS可以运行32位应用程序,并且同一级别的程序可以彼此“交谈”。请查看下面的URL以获取所有详细信息。
https://datatofish.com/how-to-connect-python-to-ms-access-database-using-pyodbc/