sql >> Databasteknik >  >> RDS >> Oracle

Distribuera cx_Oracle på olika versioner av Oracle Client

Om du vill bygga flera cx_Oracle-versioner (t.ex.:cx_Oracle10g, cx_Oracle11g, etc.) måste du ändra skriptet cx_Oracle setup.py. Det sista steget i skriptet är ett anrop till setup(); den första parametern är namnet på modulen som ska byggas. Allt du behöver göra är att ändra "cx_Oracle" till "cx_Oracle" + ver , där ver är 10g , 11g , etc. Skapa antingen flera skript och hårdkoda det, eller lägg till en annan parameter i setup.py för att välja det dynamiskt.

Naturligtvis, när du väl har det, behöver du en mekanism för att ladda rätt modul vid körning. För att göra det vill du skapa din egen cx_Oracle modul som har en __init__.py fil som ser ut ungefär så här:

try:
  from cx_Oracle9g import *
except ImportError:
  try:
    from cx_Oracle10g import *
  except ImportError:
    try:
      from cx_Oracle11g import *

Allt du behöver göra är att skicka din anpassade cx_Oracle modul plus rätt cx_OracleXg modul med din ansökan.

Alternativt kan du ha din anpassade cx_Oracle modul kontrollera dynamiskt för varje tillgängligt Oracle-klientbibliotek (9g, 10g, 11g, etc) och importera sedan bara korrekt matchande cx_OracleXg modul. I det här fallet behöver du bara skicka en enda binär som innehåller din anpassade cx_Oracle modul plus alla cx_OracleXg moduler.




  1. MySQL-relation med flera tabeller

  2. Tuple to List - Python / PostgreSQL returtyp av SETOF Record

  3. Varför behöver vi GLOB-satsen i SQLite?

  4. Hur man kontrollerar om en array är tom i Postgres