Я запускаю Python 2.7 и использую cx_Oracle на 64-разрядной ОС Linux. Мне нужно иметь возможность работать против клиента 11.2 или 12.1, поскольку я не могу быть уверен, какой клиент будет установлен на развернутой цели. Я знаю, что cx_Oracle создан для каждого клиента Oracle. Как я могу быть уверен, что приложение будет работать? Я должен упомянуть, что я использую pyinstaller для упаковки приложения. Есть ли версия cx_Oracle, созданная против обоих клиентов Oracle, или мне нужно иметь две разные версии моего приложения ... один для 11g и один для клиента 12c?cx_Oracle с несколькими версиями клиента Oracle
ответ
Хотя теоретически вы должны быть способны создать версию cx_Oracle Oracle 11g и использовать ее как с клиентом Oracle 11g, так и с Oracle 12c, я бы не рекомендовал его. Если вы сможете убедить своих пользователей использовать мгновенный клиент Oracle 12c, который будет самым простым. Этот клиент может без проблем получить доступ к базам данных 11g и 12c. Но если это невозможно, другой вариант следующий:
1) Скомпилируйте cx_Oracle для 11g и 12c и поместите обе копии в вашу установку с именем (например) 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) Используйте cx_Oracle 6.x, который одновременно поддерживает любые Oracle Client 11.2, 12.1 и 12.2.
- 1. Управление версиями с несколькими версиями
- 2. cx_oracle и oracle 7?
- 3. Поведение JDBC типа 2 с установленными несколькими версиями клиента DB2
- 4. Развертывание cx_Oracle на различные версии Oracle Client
- 5. Построение с несколькими версиями компилятора
- 6. autospec с несколькими версиями Ruby
- 7. NAnt с несколькими версиями компилятора
- 8. Работа с несколькими версиями Python?
- 9. Как получить доступ к Oracle db без установки клиента Oracle и cx_Oracle?
- 10. RobotFramework: cx_Oracle - FAIL: InternalError: Нет ошибки Oracle?
- 11. Веб-сайты Azure - развертывание с несколькими версиями
- 12. cx_Oracle не устанавливается на Oracle Linux
- 13. Запросы по Oracle Schema-х в cx_Oracle
- 14. cx_Oracle и подключение к Oracle DB удаленно
- 15. Использование cx_Oracle callfunc для получения объектов oracle
- 16. cx_oracle не может найти Oracle Client
- 17. Передача списка python oracle where clause cx_Oracle
- 18. Управление несколькими версиями кода в Git
- 19. Экспресс-приложение с двумя версиями клиента
- 20. подключиться к Oracle с cx_Oracle с защищенным паролем
- 21. Управление несколькими версиями Ruby Gem
- 22. Управление несколькими версиями зависимостей с OSGI/Maven
- 23. Как бороться с несколькими версиями зависимостей?
- 24. pip: работа с несколькими версиями Python?
- 25. Java: Работа с несколькими версиями XML-схем
- 26. Создатель TeamCity с несколькими версиями Qt
- 27. Maven - как работать с несколькими версиями зависимостей?
- 28. Управление версиями Matlab Simulink с несколькими разработчиками
- 29. Перенос основных данных (легкий) с несколькими версиями
- 30. Расширительный делегат с несколькими версиями часов