この記事では主に python cx_Oracle モジュールのインストールと使用に関する関連情報を詳しく紹介しますので、必要な方は参考にしてください
python cx_Oracle モジュールのインストール
最近データ移行スクリプトを書く必要があります。データを単一の Oracle に移行するには データを MySQL シャーディングクラスターに移行します。 linux に cx_Oracle をインストールするのはまだ少し面倒です。
Oracle クライアントの場合、対応する Python モジュール (ここでは Oracle の公式 Python モジュール - cx_Oracle を使用しました) をインストールする必要があるだけでなく、通常はインスタント クライアントを選択するだけで十分です。 tnsnames.ora も設定する必要があります (もちろん、単に host:port/schema を通じてアクセスすることもできます)。
インストール:
1. まずバージョンを決定します。 Oracle データは少し古いため、古いバージョンである Oracle Instant Client 10.2.0.4 を選択しました。
2. instantclient-basic をダウンロードします。ダウンロードアドレス: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html。これは Oracle に対する重大な問題です。ダウンロードする前に登録する必要があります。重要なのは、登録時にパスワードには大文字と小文字を使用する必要があるということです。少なくとも 8 文字。彼らは私に、銀行のパスワードよりも安全なパスワードを取得するよう強制し(OK、入力した内容を忘れてしまいました…)、ベーシックをダウンロードするだけでした。 $wget download.oracle.com/otn/linux/instantclient/10204/basic-10.2.0.4.0-linux-x86_64.zip
$unzip instantclient-basic-linux.x64-10.2.0.4.0.zip $cd instantclient_10_2 $cp * /usr/lib #直接放到动态库搜索路径中,不需要额外的环境配置 或 $unzip instantclient-basic-linux.x64-10.2.0.4.0.zip $cp -rf instantclient_10_2 /opt/ $vi /etc/profile export ORACLE_HOME=/opt/instantclient_10_2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME $source /etc/profile
4. tnsnames.ora を設定します (tns を設定する必要はありません)
tnsnames.ora は実際には存在しないので、自分で作成する必要があることに注意してください (これも面倒ですが、最初は必要だと思いました)何をインストールするか.)、私はこの方法を使用したことがありません。興味がある場合は、Googleで調べてください。
5. cx_Oracle Python モジュールをダウンロードしてインストールします
$wget downloads.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm $rpm -ivh cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm $ls /usr/lib/python2.6/site-packages/cx_Oracle.so #有这个文件表示安装成功,根据python的位置,也可能在其他地方,自己找一下吧
6. 検証と問題解決
$python >>import cx_Oracle
インスタントクライアントの動的ライブラリが見つからないことを意味します。環境
変数が設定されているか、有効であるか、バージョンが正しいかどうかを確認してください。 エラーが報告された場合: ImportError: ./cx_Oracle.so: un 未定義のシンボル: PyUnicodeUCS4_Decode
Google的信息:There is nothing wrong with Debian. Python supports two incompatible modes of operation for Unicode, UCS2 (the default), and UCS4. Debian uses the default, Redhat uses UCS4. You need to recompile the extension for UCS-2 mode (i.e. using a Debian installation); this would fix the undefined symbol: PyUnicodeUCS4_Decode
そこで、python
$./configure --prefix=/usr/local/python2.6.5 --enable-shared -enable-unicode=ucs4 $make;make install
を再コンパイルして再度確認すると、最終的にインポートが正常に行われます。
使用法:
1. 基本的な接続 – Oracle tns エイリアスを使用します
connection =cx_Oracle.connect("tp/tp@ocn_test") #查看tns alias命令 cmd>tnsping ocn_test TNS Ping Utility forLinux: Version 9.2.0.8.0-Production on 27-SEP-201110:47:48 Copyright (c) 1997, 2006, Oracle Corporation. Allrights reserved. Used parameter files: /opt/……/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL =TCP)(HOST =10.20.36.19)(PORT =1520))) (CONNECT_DATA =(SID =ocntest))) OK (10msec)
2. ユーザーは、接続するためのパスワードを入力します
pwd =getpass.getpass() connection =cx_Oracle.connect("tp",pwd,"ocn_test")
3. ユーザーは、Python コマンドに接続アカウント情報を直接入力します。 python script.py tp/tp @ocn_test
connection =cx_Oracle.connect(sys.argv[1])
4. Easy Connect 構文を使用して、Drive
connection =cx_Oracle.connect('tp','tp','10.20.36.19:1521/ocntest')
#or
connection =cx_Oracle.connect('tp/tp@10.20.36.19:1521/ocntest')
tns_name =cx_Oracle.makedsn('10.20.36.19','1521',' ocntest ') connection =cx_Oracle.connect('tp','tp',tns_name)
としてログインします。 Linux サーバーで Oracle 操作を実行中にエラーが発生しました:
connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSDBA) #or as SYSOPER connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSOPER)
【関連する推奨事項】
1.Python オブジェクト指向ビデオ チュートリアル
以上がcx_Oracle モジュールをインストールする手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。