ZT:如何用Python访问带密码的access mdb数据库


为了从旧有的系统中导入数据,需要访问带密码的MS Access数据库。网上搜到了不少访问mdb文件的办法,比如
ADO
方式,
DAO
方式,但网上的各个例子都是针对不加密的数据库。
经过艰苦卓绝的搜索,终于在微软的知识库里发现了
如何访问带密码的access数据库
的文章,居然会自动重定向到机器翻译的中文页面,虽然语句乱七八糟的,程序还是可以看懂的。原来OpenDatabase函数是可以带四个参数的。
OpenDatabase(dbname, options, read-only, connect)
在connect中指定密码,格式为:”MS Access;PWD=xxx”
总结一下完整的方法:

  • 利用makepy来创建DAO对象相应的库,在PythonWin中选择Tools->COM Makepy utility,然后选择Microsof DAO 3.6 Object Library,创建相应的python文件

    • 利用
      daoBaseClass
      来进行SQL查询和结果处理,原来的daoBaseClass不支持密码,需要改动其初始化函数
      改动部分代码如下:
      try:     
          self.daoDB = self.daoEngine.OpenDatabase(self.path,False,False,connect)
      except:
          emsg="Unable open database file=%s" % self.path
          self.abort(emsg)