【问题标题】:Python - reading Oracle from Linux or Windows with the SAME codePython - 使用相同的代码从 Linux 或 Windows 读取 Oracle
【发布时间】:2011-05-15 01:03:10
【问题描述】:

这里有一个背景:我们有一个在 Windows 上运行的 Oracle 服务器。几年前,我编写了一个客户端(windows),它从 Oracle 读取数据、处理、创建 XML 并将其发送回仪器(质谱仪)控制软件(与 Oracle 在同一台机器上运行)。实用程序是用 C++ 编写的带有两个包装器的 dll:GUI 和控制台(用于 LIMS)。连接是通过 ADO/ODBC 完成的,因此您不必安装 Oracle 客户端(用于 Oracle ODBC 驱动程序的 MS 工作得很好......)多年来一直像魅力一样工作,但是......现在 LIMS 正在迁移到 Linux .我有一个选择:

  1. 编写一个Linux版本并同时维护Win和Linux(这不好),或者
  2. 编写独立于平台的代码(考虑 Python)并从此过上幸福的生活。

这是我的(表述不佳)问题:如果没有安装 Oracle 客户端,是否可以编写 Python 代码来读取驻留在 Linux 或 Windows 上的 Oracle 数据?

编辑:重新制定表述不佳的问题:为了在 Linux 或 Windows 上使用相同的代码读取 Oracle 数据,我必须对标准 Python 配置/lib 进行哪些最小更改?

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

已经完成:

  1. 了解它可以用 Java 完成
  2. Python:我可以检测我正在运行的平台,并在必要时分支代码(我会这样做,但不希望这样做,可能只是一个连接字符串?)
  3. 看了Python cx_Oracle,还是不明白能不能用,Linux和Win的代码一样(现在写测试)

任何内部将不胜感激。谢谢

Edit1:找到了一个很好的起点:感谢cx_Oracle and the data source paradigm

【问题讨论】:

    标签: python oracle client


    【解决方案1】:

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

    http://pyodbc.sourceforge.net/

    【讨论】:

    • 谢谢,我已经有了 pyodbc 和 cx_Oracle 并且很快就会知道我让自己陷入了什么混乱......
    【解决方案2】:

    你的问题

    是否可以编写 Python 代码 它读取驻留在 要么

    没有多大意义,您可以以可移植的方式访问任何数据库 通过使用由所有相关数据库绑定实现的标准 Python DB API。

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

    在任何情况下,您都需要系统上的平台和特定绑定,以便让底层 Python 数据库驱动程序与 Oracle 或任何数据库通信,但这完全独立于任何应用程序代码。理论上,只要有驱动程序并且您的应用程序使用“标准”SQL 功能,代码就可以针对每个数据库运行。

    【讨论】:

    • @Sentinel 是的,我的问题表述得很糟糕。虽然您错过了“PROVIDING no Oracle client installed?”。我想说的是:“在标准的 Python 配置中,对系统的改动很小......”我会尝试重新制定它
    • 在任何情况下都需要 ODBC 驱动程序或本机 Oracle 驱动程序。
    • 是的,我明白了。我想弄清楚为什么,例如,相同的连接字符串会在 Win 上打开 db,但在 Linux 上不会。它可能是一些微不足道的东西,比如斜杠反斜杠,或者更深的东西
    • 我的观点是一个脚印。 Oracle 客户端为 200-400 MB。我确信如果我安装了 Ora 客户端,我可以在 Linux 和 Win 上运行几乎相同的代码(带有一些 twiks)。系统提供的驱动会不会一样?
    • 如前所述:您需要 odbc 或本机驱动程序 - 您的进一步观点是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 2022-11-21
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多