2015-09-29 94 views
1

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

+0

你需要你的机器上的客户端,但你可能不会需要在服务器上单独安装Oracle客户端,作为Oracle服务器已经在那里运行。 – acutesoftware

回答

1

你必须安装Instance_client为cx_oracle驱动程序与远程Oracle服务器

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

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

下面的代码可以引用oracle数据库连接。

从SQLAlchemy的进口create_engine

从sqlalchemy.orm进口sessionmaker

发动机= create_engine( 'ORACLE + cx_oracle:// test_user:test_user @ ORACSG')

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

session = session_factory()

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

打印res.fetchall()

+0

我已经安装了即时客户端,并且能够在脚本中导入cx_Oracle。现在连接到数据库我们必须使用连接器(SQLAlchemy,正如你所提到的),或者它可以在没有它的情况下完成? – user3379410

+0

您可以在没有SqlAlchemy的情况下连接。>>> ip ='192.168.0.1' >>> port = 1521 >>> SID ='YOURSIDHERE' >>> dsn_tns = cx_Oracle.makedsn(ip,port,SID) >>>康恩= cx_Oracle.connect( '用户名', '密码',dsn_tns) >>>小人= conn.cursor() >>> curs.execute( 'SELECT * FROM EMP') > >> print curs.description for curs in row: print row conn。接近() –

+0

如果我们使用java写的代码(因此,JDBC模块),我们还是一定需要安装即时客户端或任何其他Oracle客户端或JDBC是足够的,作为呢? 我想要的是,用户无需安装Oracle客户端。如果JDBC做到了,那就很好。如果没有,请告诉我,如果可能的话,我正在尝试。 – user3379410

0

是的,你一定需要安装一个Oracle客户端,它甚至在cx_oracle readme.txt中这样说。 您可以在其中找到的另一个建议是安装Oracle即时客户端,这是与Oracle通信所需的最小安装,并且最简单易用。 通常可以在readme.txt文件中找到其他依赖关系,并应该首先查找这些详细信息。