使用 Python 操作受用户名和密码保护的 Access 数据库

Posted

技术标签:

【中文标题】使用 Python 操作受用户名和密码保护的 Access 数据库【英文标题】:Using Python to manipulate an Access database protected with UserName and Password 【发布时间】: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 吗? 【参考方案1】:

由于您在 Windows 上使用 32 位 Python,您可以简单地使用 pypyodbc 或 pyodbc 和 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;"
    )

注意事项:

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

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

【讨论】:

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

以上是关于使用 Python 操作受用户名和密码保护的 Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

python操作数据库,实现用户名密码登录数据库,首次登录自行设置密码,并返回工资表明细。

AC日记——紧急措施 openjudge 1.7 22

python 循环和file操作实现用户密码输错三次将用户锁定

使用用户名/密码验证与 activeMQ 的连接

Python实战-编写基本登陆入口

在 python 中使用 selenium 填写用户名和密码