用于查询 Access 数据库 (.mdb) 文件的只读方法?
Posted
技术标签:
【中文标题】用于查询 Access 数据库 (.mdb) 文件的只读方法?【英文标题】:Read only method for querying an Access database (.mdb) file? 【发布时间】:2020-07-30 12:07:56 【问题描述】:我有一个读取 .MDB 数据库并将其转换为 csv 文件的代码,并且由于我的数据库位于共享网络文件夹中,当代码正在读取数据库时,其他测试台无法写入数据库。
我需要一种以只读方式读取此 .mdb 的方法,以便每个人都可以在读取此代码时打开它进行编辑
import pyodbc
DRV = 'Microsoft Access Driver (*.mdb)'
PWD = ''
mdb = 'C:\newfolder\database.mdb'
con = pyodbc.connect('DRIVER=;DBQ=;PWD='.format(DRV, mdb, PWD)) # connect to db
cur = con.cursor()
sql = 'SELECT * FROM CK_Test_Results;' # run a query and get the results
rows = cur.execute(sql).fetchall()
cur.close()
con.close()
with open('Database.csv', 'w', newline='') as fou:
csv_writer = csv.writer(fou) # default field-delimiter is ","
csv_writer.writerows(rows)
【问题讨论】:
【参考方案1】:您可以通过将;ReadOnly=1
附加到您的连接字符串来强制连接为只读。但是,其他用户当然可以在您阅读数据库时更新它。
检查 .mdb 文件所在的文件夹的权限; 所有 数据库用户必须对文件夹具有读/写访问权限,才能使并发多用户访问正常工作。详情请见this answer。
【讨论】:
感谢 thompson,您总是来回答 MDB、ODBC 的问题。【参考方案2】:从控制面板/管理工具编辑您的 ODBC 连接文件。选择 ODBC 驱动程序,然后单击配置,然后单击选项。在显示窗口的底部,您应该会看到独占和/或只读。
【讨论】:
但是我的 odbc 也在做一些写操作,我将它创建为 exe 并发送给我的团队,我不能告诉每个人这个设置。如果里面有任何选项会更好这段代码 你应该考虑使用“真实”的数据库,比如mysql、Postges……也可以将数据库复制到临时目录(如果复制时间“短”)……以上是关于用于查询 Access 数据库 (.mdb) 文件的只读方法?的主要内容,如果未能解决你的问题,请参考以下文章
使用 LINQ 和 C# 查询 Microsoft Access MDB 数据库
用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?