2015-09-29 92 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文件中找到其他依賴關係,並應該首先查找這些詳細信息。