使用Python构建MS Access数据库

8 投票
8 回答
3725 浏览
提问于 2025-04-16 17:01

我计划参与的一个项目主要目标是用python创建一个Microsoft Access数据库。这个数据库的主要后台会使用postgres,但计划是导出一个Access格式的文件。

这个项目会是一个网页应用,它会接收用户输入,然后经过一个“黑箱”处理,最后输出结果为一个Access数据库。这个网页应用会在一个Linux服务器上搭建。

我有几个相关的问题:

  • 有没有可靠的库或者模块可以使用?
  • 你在使用Access和python时有什么经验?
  • 有没有什么技巧、窍门或者需要避免的事情我需要知道的?

谢谢 :)

8 个回答

2

如果你对以下内容很熟悉:

  • Python,它的数据库模块,以及ODBC配置

那么你应该知道怎么做这个:

  • 打开一个数据库,读取一些数据,然后把它插入到另一个数据库中

如果是这样的话,你离你想要的解决方案就很近了。关键是,你可以把MDB文件当作ODBC数据源来打开。现在:我不确定你能否通过ODBC在MDB文件中“创建表”,所以我给你提个建议:

  1. 创建一个名为“TARGET.MDB”的MDB文件,里面包含必要的表、表单、报告等。(放一些测试数据进去,确保它符合客户的需求。)
  2. 为“TARGET.MDB”设置一个ODBC数据源。测试一下,确保你可以读写数据。
  3. 删除所有的测试数据,但保留表的定义不变。把文件重命名为“TEMPLATE.MDB”。
  4. 当你需要生成一个新的MDB文件时:用Python 复制 TEMPLATE.MDB到 TARGET.MDB。
  5. 打开数据源,写入到TARGET.MDB。创建或复制所需的记录。
  6. 关闭数据源,把TARGET.MDB重命名为TODAYS_REPORT.MDB……或者根据这次数据导出给它起个合适的名字。

这样做对你有用吗?

在Windows上做这些事情几乎肯定会更简单,因为ODBC的支持最广泛。不过,我觉得原则上你也可以在Linux上做到,只要你找到合适的ODBC组件来通过ODBC访问MDB。

2

针对这个重复问题的各种回答都表明,你想在Linux服务器上创建一个MS Access数据库的“主要目标”是无法实现的。

当然,这个目标本身也没有什么价值。如果你能告诉我们使用这个Access数据库的用户/消费者具体想要什么,也许我们能帮到你。可能的解决方案有:(1) 创建一个脚本和一组文件,用户下载后运行这些文件来创建Access数据库;(2) 如果只是为了让普通用户查看或操作,使用Excel文件可能就足够了。

5

你能不能用sqlite数据库呢?

补充:

如果一定要在linux上运行,并且必须使用MS Access的话,我觉得这个选择是唯一的了,不过它要花$1,550。

你要么就得花这笔钱,要么说服客户改变其他两个条件。个人来说,我会建议把数据库文件换成sqlite。

当然,你也可以自己写一个数据库驱动,但花$1,550去买现成的可能更划算。mdbtools这个项目已经研究了很多年,但现在几乎被放弃了。

找到了,算是

好吧,我就是放不下这个,发现有一个叫Jackcess的java库,可以在任何能运行jvm的平台上写入MS Access的mdb文件。虽然它是java而不是python,但也许你可以学一点java,写个程序,然后从python中运行它?或者干脆把整个应用换成java,随你怎么选。

撰写回答