使用 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操作数据库,实现用户名密码登录数据库,首次登录自行设置密码,并返回工资表明细。