【问题标题】:Using Python to manipulate an Access database protected with UserName and Password使用 Python 操作受用户名和密码保护的 Access 数据库
【发布时间】:2015-11-10 13:34:54
【问题描述】:

我必须使用 MS Access DB,我可以在其中通过 GUI 手动插入和修改数据。 GUI 会打开并执行 .mde 文件,提示输入用户名和密码。

当然,我没有数据库管理员权限。我的系统也没有管理员权限。我在 64 位 Windows 7 上使用 32 位 Python。

现在我的问题:

是否可以通过命令行访问 .mdb 文件以自动集成数据/更改数据?

(Pythonic 解决方案将不胜感激。)

【问题讨论】:

  • 当您打开 .mde 文件时,系统会提示您输入用户名和密码,还是只输入密码?
  • 你有一个有效的用户名/密码组合吗?如果有,它是否有足够的权限来完成你想做的事情?
  • 是的,是的。我只是想知道如何绕过 GUI。
  • Yes, pyodbc.Error: ('IM002', '[IM002] [ODBC][Driver Manager]Data source name not found, and no default driver specified ') 以及 pypyodbc.Error: ('IM002', '[IM002] [ODBC][Driver Manager]Data source name not found, and no default driver specified ') 类似于here,但作为 UNIX 解决方案给出了
  • 你运行的是 64 位 Python 吗?

标签: python database windows ms-access


【解决方案1】:

由于您在 Windows 上使用 32 位 Python,您可以简单地使用 和 Microsoft Jet ODBC 驱动程序。您需要使用的连接字符串的格式为

connStr = (
    r"Driver={Microsoft Access Driver (*.mdb)};"
    r"Dbq=C:\whatever\mydatabase.mdb;"
    r"SystemDB=C:\whatever\mydatabase.mdw;"
    r"UID=yourUserName;"
    r"PWD=yourPassword;"
    )

注意事项:

  1. 对于 64 位 Python,您必须使用较新的 Microsoft Access Database Engine(又名“ACE”)和 Driver={Microsoft Access Driver (*.mdb, *.accdb)} 的 64 位版本。

  2. 如果相关数据库使用默认系统工作组来管理用户名和密码,则可以省略 SystemDB 参数。默认系统工作组文件名为“system.mdw”,位于“%APPDATA%\Microsoft\Access\”或“%windir%\system32\”文件夹中。

【讨论】:

  • 非常感谢您的回答和编辑。但是,由于我无法在我的系统上安装 ACE 或 ODBC 驱动程序,它仍然无法正常工作,但这当然不是你的错。 ...现在将尝试 ucanaccess。无论如何,我学到了一些东西:我之前没有意识到除了 pyodbc/pypyodcb 之外还需要 ODBC 或 ACE。
  • @corinna - Microsoft "Jet" ODBC 驱动程序(如上面的代码示例)作为 Windows 的一部分安装,如果您确实在运行 32 位 Python,那么您应该只需要它。
猜你喜欢
  • 1970-01-01
  • 2012-12-25
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2014-10-02
相关资源
最近更新 更多