Python - 用相同代码在Linux或Windows读取Oracle

0 投票
2 回答
512 浏览
提问于 2025-04-16 17:38

背景是这样的:我们有一台在Windows上运行的Oracle服务器。多年前,我写了一个Windows客户端,它可以从Oracle读取数据,处理这些数据,生成XML文件,然后把它发送回控制软件(这个软件和Oracle在同一台机器上,控制的是质谱仪)。这个工具是用C++写的,做成了一个dll,外面有两个包装:一个是图形界面,另一个是控制台(用于实验室信息管理系统LIMS)。连接是通过ADO/ODBC实现的,所以你不需要安装Oracle客户端(微软的Oracle ODBC驱动就很好用……)。这个工具多年来一直运行得很好,但现在LIMS要迁移到Linux上。我面临两个选择:

  1. 写一个Linux版本,并同时维护Windows和Linux版本(这可不好),或者
  2. 写一个跨平台的代码(考虑用Python),然后就可以高高兴兴地过日子了。

我想问的问题是:有没有可能写出Python代码,能够在Linux或Windows上读取Oracle的数据,而不需要安装Oracle客户端?

编辑:重新表述一下我不太清楚的问题:为了在Linux和Windows上使用相同的代码读取Oracle数据,我需要对标准Python配置/库做哪些最小的改动?

我只需要执行一堆SELECT语句,且只读。

已经做过的:

  1. 明白这可以在Java中实现
  2. 在Python中,我可以检测我运行的平台,并在必要时分支代码(我会这么做,但不太想这样,可能只需要一个连接字符串?)
  3. 看过Python的cx_Oracle,但仍然不太明白我是否可以在Linux和Windows上使用相同的代码(我现在正在写测试)

任何建议都非常感谢。谢谢!

编辑1:找到了一个很好的起点:感谢 cx_Oracle和数据源范式

2 个回答

0

你的问题

有没有可能写一段Python代码,来读取存储在Oracle数据库中的数据?

这句话听起来有点不太对,因为你可以通过使用标准的Python数据库接口(DB API)来以一种便捷的方式访问任何数据库,而这个接口是所有相关数据库绑定都实现的。

那么这里具体的问题是什么呢?

无论如何,你都需要在你的系统上安装特定平台的数据库绑定,这样你的Python数据库驱动才能和Oracle或其他数据库进行沟通,但这和你的应用代码是完全无关的。理论上,只要有驱动程序,并且你的应用使用的是“标准”的SQL功能,这段代码就可以在任何数据库上运行。

0

使用 pyodbc 可能是另一个选择:

http://pyodbc.sourceforge.net/

撰写回答