2016-09-09 13 views
1

私はPython 2.7を実行していますが、Linuxの64ビットOSではcx_Oracleを使用しています。どのクライアントがデプロイされたターゲットにインストールされるかわからないので、11.2または12.1のOracleクライアントに対して実行できる必要があります。私はcx_Oracleが各Oracleクライアントに対して構築されていることを知っています。どのようにアプリが動作することを確認できますか?私はpyinstallerを使用してアプリケーションをパッケージングしていることを言及する必要があります。両方のOracleクライアントに対して構築されたcx_Oracleのバージョンがありますか?つまり、2つの異なるバージョンのアプリケーションを必要としていますか... 11g用と12cクライアント用のどちらですか?複数のOracleクライアント・バージョンを持つcx_Oracle

答えて

1

理論上、Oracle 11gバージョンのcx_Oracleを構築し、Oracle 11gとOracle 12cクライアントの両方で使用できるはずですが、推奨しません。最も簡単なOracle 12cインスタント・クライアントを使用するようにユーザーを説得できる場合は、そのクライアントは、11gと12cの両方のデータベースに問題なくアクセスできます。

1)11gと12cの両方についてcx_Oracleをコンパイルし、両方のコピーをcx_Oracle_11g.soとcx_Oracle_12c.soという名前のインストールに配置します。

2)輸入cx_Oracleは、動的に次のようなコードを使用して:あなたは以前と同じ方法でそれを必要な場所

for version in ("11g", "12c"): 
    fileName = os.path.join(installDir, "cx_Oracle_%s.so" % version) 
    try: 
     module = imp.load_dynamic("cx_Oracle", fileName) 
     break 
    except ImportError: 
     pass 

3)は、動的にインポートされたモジュールを使用してください。動的にロードされたモジュールはcx_Oracleという名前が付けられているので、他のコードで通常の方法でインポートすることができ、動的にロードされたモジュールが見つかるはずです。

4)Oracleクライアント11.2,12.1および12.2を同時にサポートするcx_Oracle 6.xを使用します。

関連する問題