使用Python构建MS Access数据库
我计划参与的一个项目主要目标是用python创建一个Microsoft Access数据库。这个数据库的主要后台会使用postgres,但计划是导出一个Access格式的文件。
这个项目会是一个网页应用,它会接收用户输入,然后经过一个“黑箱”处理,最后输出结果为一个Access数据库。这个网页应用会在一个Linux服务器上搭建。
我有几个相关的问题:
- 有没有可靠的库或者模块可以使用?
- 你在使用Access和python时有什么经验?
- 有没有什么技巧、窍门或者需要避免的事情我需要知道的?
谢谢 :)
8 个回答
如果你对以下内容很熟悉:
- Python,它的数据库模块,以及ODBC配置
那么你应该知道怎么做这个:
- 打开一个数据库,读取一些数据,然后把它插入到另一个数据库中
如果是这样的话,你离你想要的解决方案就很近了。关键是,你可以把MDB文件当作ODBC数据源来打开。现在:我不确定你能否通过ODBC在MDB文件中“创建表”,所以我给你提个建议:
- 创建一个名为“TARGET.MDB”的MDB文件,里面包含必要的表、表单、报告等。(放一些测试数据进去,确保它符合客户的需求。)
- 为“TARGET.MDB”设置一个ODBC数据源。测试一下,确保你可以读写数据。
- 删除所有的测试数据,但保留表的定义不变。把文件重命名为“TEMPLATE.MDB”。
- 当你需要生成一个新的MDB文件时:用Python 复制 TEMPLATE.MDB到 TARGET.MDB。
- 打开数据源,写入到TARGET.MDB。创建或复制所需的记录。
- 关闭数据源,把TARGET.MDB重命名为TODAYS_REPORT.MDB……或者根据这次数据导出给它起个合适的名字。
这样做对你有用吗?
在Windows上做这些事情几乎肯定会更简单,因为ODBC的支持最广泛。不过,我觉得原则上你也可以在Linux上做到,只要你找到合适的ODBC组件来通过ODBC访问MDB。
针对这个重复问题的各种回答都表明,你想在Linux服务器上创建一个MS Access数据库的“主要目标”是无法实现的。
当然,这个目标本身也没有什么价值。如果你能告诉我们使用这个Access数据库的用户/消费者具体想要做什么,也许我们能帮到你。可能的解决方案有:(1) 创建一个脚本和一组文件,用户下载后运行这些文件来创建Access数据库;(2) 如果只是为了让普通用户查看或操作,使用Excel文件可能就足够了。
你能不能用sqlite数据库呢?
补充:
如果一定要在linux上运行,并且必须使用MS Access的话,我觉得这个选择是唯一的了,不过它要花$1,550。
你要么就得花这笔钱,要么说服客户改变其他两个条件。个人来说,我会建议把数据库文件换成sqlite。
当然,你也可以自己写一个数据库驱动,但花$1,550去买现成的可能更划算。mdbtools这个项目已经研究了很多年,但现在几乎被放弃了。
找到了,算是
好吧,我就是放不下这个,发现有一个叫Jackcess的java库,可以在任何能运行jvm的平台上写入MS Access的mdb文件。虽然它是java而不是python,但也许你可以学一点java,写个程序,然后从python中运行它?或者干脆把整个应用换成java,随你怎么选。