鱼C论坛

 找回密码
 立即注册
查看: 6459|回复: 4

[已解决]Python访问access数据库文件.accdb的问题

[复制链接]
发表于 2016-12-9 11:32:29 | 显示全部楼层 |阅读模式
5鱼币
最近我想用python写个小程序:
        访问本地access数据库文件.accdb,通过关键字搜索其中内容,并将结果显示在交互界面上。
在一开始我就遇到了问题:
        下载的工具pypyodbc,只支持.mdb的文件,没法访问.accdb文件。
请问,哪位鱼油能教教我,该用哪个工具去实现我的想法?

正确和错误代码如下:
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import pypyodbc
>>> conn=pypyodbc.connect(u'Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\salesdb.mdb')
>>> cur=conn.cursor()
>>> conn.close()
>>> conn1=pypyodbc.connect(u'Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=d:\list.accdb')

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    conn1=pypyodbc.connect(u'Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=d:\list.accdb')
  File "build\bdist.win32\egg\pypyodbc.py", line 2277, in __init__
    self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly)
  File "build\bdist.win32\egg\pypyodbc.py", line 2325, in connect
    check_success(self, ret)
  File "build\bdist.win32\egg\pypyodbc.py", line 944, in check_success
    ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)
  File "build\bdist.win32\egg\pypyodbc.py", line 922, in ctrl_err
    raise Error(state,err_text)
Error: (u'IM002', u'[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified')
最佳答案
2016-12-9 11:32:30
pt2100 发表于 2016-12-11 22:23
我的系统是WIN7 64位,python是3.5版本,在pythonwin的编译界面,按照网上的教程导入win32com.client, ...

你没安装微软的 ACE引擎~

最佳答案

查看完整内容

你没安装微软的 ACE引擎~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-9 11:32:30 | 显示全部楼层    本楼为最佳答案   
pt2100 发表于 2016-12-11 22:23
我的系统是WIN7 64位,python是3.5版本,在pythonwin的编译界面,按照网上的教程导入win32com.client, ...

你没安装微软的 ACE引擎~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-9 12:09:20 | 显示全部楼层
  1. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\list.accdb;Persist Security Info=False;
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-11 22:23:45 | 显示全部楼层
本帖最后由 pt2100 于 2016-12-11 23:08 编辑


我的系统是WIN7 64位,python是3.5版本,在pythonwin的编译界面,按照网上的教程导入win32com.client,定义conn:‘conn=win32com.client.Dispatch(r'ADODB.Connection')’
接着再输入
‘DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=d:\list.accdb;'’或者
‘DSN=‘Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\list.accdb;''
这些都没问题,跟着一句‘conn.Open(DSN)’就报错了。请问是什么问题?我觉得是我一点都不了解python与数据库的交互,请问哪里有中文文档可以让我先仔细了解一下?我在论坛里面没有找到类似的,新手新手原谅则个。

错误代码如下:
>>> conn.Open(DSN)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "<COMObject ADODB.Connection>", line 3, in Open
  File "C:\Users\tpeng\AppData\Local\Programs\Python\Python35\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
    result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'ADODB.Connection', 'Provider cannot be found. It may not be properly installed.', 'C:\\WINDOWS\\HELP\\ADO270.CHM', 1240655, -2146824582), None)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-14 08:44:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 11:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表