1

我正在开发一个程序来自动解析 XML 文件中的数据并将其存储到多个数据库中。(特别是 USGS 实时水质服务,如果有人感兴趣,请访问http://waterservices.usgs.gov/rest/WaterML-Interim-REST-Service.html)它是使用 LXML 和 PYODBC 用 Python 2.5.1 编写的。数据库位于 Microsoft Access 2000 中。

连接函数如下:
def get_AccessConnection(db):
connString = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=' + db
cnxn = pyodbc.connect(connString, autocommit=False)
cursor = cnxn。 cursor()
返回 cnxn, cursor
其中 db 是数据库的文件路径。

该程序:
a) 打开与数据库的连接
b) 为该数据库解析 2 到 8 个 XML 文件,并将其中的值构建为一系列记录以插入数据库(使用嵌套字典结构,而不是用户定义的type)
c) 遍历一系列记录,cursor.execute() - 为每个记录执行一个 SQL 查询
d) 提交并关闭数据库连接

如果 cursor.execute() 调用抛出错误,它会将回溯和查询写入日志文件并继续。

当我的同事在他的机器上运行它时,对于一个特定的数据库,特定的记录根本不存在,也没有记录错误。当我从我的机器通过完全相同的网络路径在完全相同的数据库副本上运行完全相同的代码时,应该存在的所有数据都在那里。

我和我的同事都在装有 Microsoft Access 2000 和相同版本的 Python、lxml 和 pyodbc 的 Windows XP 计算机上。我不知道如何检查我们是否拥有相同版本的 Microsoft ODBC 驱动程序。我无法找到存在的记录和不存在的记录之间的任何区别。我正在测试其他数据库是否会发生同样的问题,以及是否也发生在第三位同事的计算机上。

我真正想知道的是任何人能想到的任何事情都会导致这种情况,因为这对我来说没有意义。总结一下:执行 SQL 查询的 Python 代码将在一台计算机上静默失败一半,而在另一台计算机上完美运行。

编辑:
没有更多的问题。我只是让我的同事再次运行它,并且数据库已完全更新,没有丢失记录。仍然不知道为什么它首先失败了,也不知道它是否会再次发生,但“问题解决了”。

4

1 回答 1

1

我不知道如何检查我们是否拥有相同版本的 Microsoft ODBC 驱动程序。

我认为您正在寻找控制面板 | 管理工具 | 数据源 (ODBC)。单击“驱动程序”选项卡。

我认为无论是 Access 2000 还是 Office 2000 都附带了一个名为“MSDE”的 SQL Server 桌面版。可能值得安装它进行测试。(或生产,就此而言。)

于 2011-01-26T10:31:14.253 回答