【问题标题】:Python connection to Oracle databasePython 连接到 Oracle 数据库
【发布时间】:2015-12-26 11:50:09
【问题描述】:

我正在编写一个 Python 脚本来从 Linux 服务器获取和更新远程 oracle 数据库上的一些数据。我想知道如何从服务器连接到远程 oracle 数据库。
我是否一定需要在我的服务器上安装一个 oracle 客户端,或者任何连接器都可以用于相同的?
另外,如果我在 Python 中使用 cx_Oracle 模块,是否需要满足任何依赖项才能使其正常工作?

【问题讨论】:

  • 您需要在您的机器上安装客户端,但您可能不需要在服务器上单独安装 oracle 客户端,因为 oracle 服务器已经在那里运行。

标签: python oracle database-connection cx-oracle


【解决方案1】:

您必须为 cx_oracle 驱动安装 Instance_client 才能与远程 oracle 服务器交互

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html.

使用 SQLAlchemy(对象关系映射器)建立连接并与 Oracle 数据库交互。

下面的代码你可以参考oracle DB连接。

从 sqlalchemy 导入 create_engine

从 sqlalchemy.orm 导入 sessionmaker

engine = create_engine('oracle+cx_oracle://test_user:test_user@ORACSG')

session_factory = sessionmaker(bind=engine, autoflush=False)

会话 = session_factory()

res = session.execute("select * from emp");

打印 res.fetchall()

【讨论】:

  • 我已经安装了即时客户端并且能够在脚本中导入 cx_Oracle。现在要连接到 db,我们是否必须使用连接器(如您提到的 SQLAlchemy),或者没有它也可以完成?
  • 你可以在没有 SqlAlchemy 的情况下连接.. >>> ip = '192.168.0.1' >>> port = 1521 >>> SID = 'YOURSIDHERE' >>> dsn_tns = cx_Oracle.makedsn(ip,端口,SID) >>> conn = cx_Oracle.connect('username', 'password', dsn_tns) >>> curs = conn.cursor() >>> curs.execute('select * from emp') >>>打印 curs.description 为 curs 中的行:打印行 conn.close()
  • 如果我们使用java编写代码(因此,jdbc模块),我们仍然需要安装即时客户端或任何其他oracle客户端或JDBC就足够了吗?我想要的是,用户不需要在他们身边安装 oracle 客户端。如果 JDBC 做到了,那就太好了。如果没有,请让我知道我是否可以这样做。
  • 您必须安装实例客户端。但是在生产环境中安装它并没有什么坏处。 docs.oracle.com/database/121/JJDBC/instclnt.htm#JJDBC28248
【解决方案2】:

是的,你肯定需要安装一个 Oracle 客户端,它甚至在 cx_oracle readme.txt 中这么说。 您可以找到的另一个建议是安装 oracle 即时客户端,这是与 Oracle 通信所需的最小安装,并且使用起来最简单。 其他依赖项通常可以在 readme.txt 文件中找到,应该是查找这些详细信息的第一个位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2013-10-03
    • 2020-02-06
    • 2014-03-18
    相关资源
    最近更新 更多