Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 21, 2019 14:28:33

ant_sol
Зарегистрирован: 2018-08-24
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy ошибка No module named 'cx_Oracle'

при попытке реализации кода

 import sqlalchemy as sql
e=sql.create_engine('oracle://user:password@host:port/sid')
e.connect()


получаю сообщение об ошибке ModuleNotFoundError: No module named ‘cx_Oracle’
в чем может быть проблема ?

PS у меня SQLAlchemy из пакета Анаконды и работаю я в jypiter notebook из-под windows

Отредактировано ant_sol (Фев. 21, 2019 14:41:01)

Офлайн

#2 Фев. 22, 2019 05:05:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

SQLAlchemy ошибка No module named 'cx_Oracle'

ant_sol
Очевидно, что для работы с СУБД нужен провайдер соответствующего клиента. Чтобы работать с Ораклом, для питона есть пакет cx_Oracle. Алхимия, знает, что для оракла надо использовать cx_Oracle, она пытается это сделать, но у вас такого пакета на машине нет, поэтому и ошибка. Вопрос, почему его нет в зависимостях алхимии. Во-первых, потому что алхимия не знает заранее, с какой СУБД вы будете работать, ей пришлось бы тащить на вашу машину десятки свяких довольно тяжелых пакетов, которые вы никогда не будете использовать. Во-вторых, cx_Oracle вообще просто так не устанавливается, это не сугубо питоний код, это обвязка для бинарников из комплекта oracle instant client. То есть для того, чтобы можно было установить (при этом скомпилировав кучу сишников) cx_Oracle, на машине уже должен быть установлен instant client.



Офлайн

#3 Фев. 22, 2019 12:15:54

ant_sol
Зарегистрирован: 2018-08-24
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy ошибка No module named 'cx_Oracle'

FishHook
ant_solОчевидно, что для работы с СУБД нужен провайдер соответствующего клиента. Чтобы работать с Ораклом, для питона есть пакет cx_Oracle. Алхимия, знает, что для оракла надо использовать cx_Oracle, она пытается это сделать, но у вас такого пакета на машине нет, поэтому и ошибка. Вопрос, почему его нет в зависимостях алхимии. Во-первых, потому что алхимия не знает заранее, с какой СУБД вы будете работать, ей пришлось бы тащить на вашу машину десятки свяких довольно тяжелых пакетов, которые вы никогда не будете использовать. Во-вторых, cx_Oracle вообще просто так не устанавливается, это не сугубо питоний код, это обвязка для бинарников из комплекта oracle instant client. То есть для того, чтобы можно было установить (при этом скомпилировав кучу сишников) cx_Oracle, на машине уже должен быть установлен instant client.

спасибо. установил cx_Oracle, однако теперь появилась ошибка:
DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: Cannot locate a 64-bit Oracle Client library

Оракл на машине есть, разрядность его 64bit
windows тоже на 64bit

В чем может быть причина ошибки ?

Офлайн

#4 Фев. 22, 2019 12:37:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

SQLAlchemy ошибка No module named 'cx_Oracle'

ant_sol
Оракл на машине есть, разрядность его 64bit
windows тоже на 64bit
Не важно, какая разрядность Оракла - клиент работает с СУБД по сети. Разрядность важна для компиляции, то есть вам нужно выяснить разрядность instant client.
Хотите совет? Не надо программировать на питоне из под винды, особенно с ораклом.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version