edgui-appolonicorreia commented on issue #20371:
URL: https://github.com/apache/superset/issues/20371#issuecomment-1186264176

   > I'm working through a similar problem now. Did you install the Oracle 
instant client into the Docker container or system you are running superset 
from? cx_oracle requires either the instant client or full Oracle client. The 
recently released `python-oracledb` no longer has this requirement, so 
installation should get easier in the near future.
   > 
   > I'm using the following in my Docker container to install the latest SQL 
client:
   > 
   > ```
   > RUN mkdir -p /usr/share/oracle/network/admin \
   >     && cd /usr/share/oracle \
   >     && apt-get update -y \
   >     && apt-get install -y --no-install-recommends git ca-certificates wget 
build-essential unzip curl libaio1 libaio-dev \
   >     && rm -rf /var/lib/apt/lists/* \
   >     && apt-get purge -y --auto-remove -o 
APT::AutoRemove::RecommendsImportant=false \
   >     && wget 
https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip
 \
   >     && unzip instantclient-basiclite-linuxx64.zip \
   >     && rm -f instantclient-basiclite-linuxx64.zip \
   >     && cd  /usr/share/oracle/instantclient* \
   >     && rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci \
   >     && echo  /usr/share/oracle/instantclient* > 
/etc/ld.so.conf.d/oracle-instantclient.conf \
   >     && ldconfig \
   >     && echo 
'local_xe=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xepdb1)))'
 > /usr/share/oracle/network/admin/tnsnames.ora```
   > ```
   
   I tried that approach, adding those lines at the Dockerfile and running 
`docker compose -f docker-compose-non-dev.yml up --build`, but I got a new 
error message (hahahahahahaahahaha) when I tried to connect to the DB:
   
   ```superset_app          | 172.21.0.1 - - [16/Jul/2022:17:48:22 +0000] "GET 
/api/v1/me/ HTTP/1.1" 200 150 
"http://localhost:8088/databaseview/list/?pageIndex=0&sortColumn=changed_on_delta_humanized&sortOrder=desc";
 "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/103.0.5060.114 Safari/537.36"
   superset_app          | 127.0.0.1 - - [16/Jul/2022:17:48:23 +0000] "GET 
/health HTTP/1.1" 200 2 "-" "curl/7.74.0"
   superset_app          | CommandException
   superset_app          | Traceback (most recent call last):
   superset_app          |   File 
"/app/superset/databases/commands/test_connection.py", line 77, in run
   superset_app          |     engine = database.get_sqla_engine()
   superset_app          |   File "/app/superset/utils/memoized.py", line 50, 
in __call__
   superset_app          |     value = self.func(*args, **kwargs)
   superset_app          |   File "/app/superset/models/core.py", line 401, in 
get_sqla_engine
   superset_app          |     raise 
self.db_engine_spec.get_dbapi_mapped_exception(ex)
   superset_app          |   File "/app/superset/models/core.py", line 399, in 
get_sqla_engine
   superset_app          |     return create_engine(sqlalchemy_url, **params)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/__init__.py", line 
525, in create_engine
   superset_app          |     return strategy.create(*args, **kwargs)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/strategies.py", line 
61, in create
   superset_app          |     entrypoint = u._get_entrypoint()
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/url.py", line 172, in 
_get_entrypoint
   superset_app          |     cls = registry.load(name)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 
277, in load
   superset_app          |     raise exc.NoSuchModuleError(
   superset_app          | sqlalchemy.exc.NoSuchModuleError: Can't load plugin: 
sqlalchemy.dialects:cx_Oracle.oracle
   superset_app          | 
   superset_app          | The above exception was the direct cause of the 
following exception:
   superset_app          | 
   superset_app          | Traceback (most recent call last):
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/flask/app.py", line 1516, in 
full_dispatch_request
   superset_app          |     rv = self.dispatch_request()
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/flask/app.py", line 1502, in 
dispatch_request
   superset_app          |     return 
self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/flask_appbuilder/security/decorators.py",
 line 89, in wraps
   superset_app          |     return f(self, *args, **kwargs)
   superset_app          |   File "/app/superset/views/base_api.py", line 113, 
in wraps
   superset_app          |     raise ex
   superset_app          |   File "/app/superset/views/base_api.py", line 110, 
in wraps
   superset_app          |     duration, response = time_function(f, self, 
*args, **kwargs)
   superset_app          |   File "/app/superset/utils/core.py", line 1533, in 
time_function
   superset_app          |     response = func(*args, **kwargs)
   superset_app          |   File "/app/superset/utils/log.py", line 244, in 
wrapper
   superset_app          |     value = f(*args, **kwargs)
   superset_app          |   File "/app/superset/views/base_api.py", line 83, 
in wraps
   superset_app          |     return f(self, *args, **kwargs)
   superset_app          |   File "/app/superset/databases/api.py", line 709, 
in test_connection
   superset_app          |     TestConnectionDatabaseCommand(item).run()
   superset_app          |   File 
"/app/superset/databases/commands/test_connection.py", line 124, in run
   superset_app          |     raise DatabaseTestConnectionDriverError(
   superset_app          | 
superset.databases.commands.exceptions.DatabaseTestConnectionDriverError: Could 
not load database driver: BaseEngineSpec
   superset_app          | 2022-07-16 
17:48:25,194:WARNING:superset.views.base:CommandException
   superset_app          | Traceback (most recent call last):
   superset_app          |   File 
"/app/superset/databases/commands/test_connection.py", line 77, in run
   superset_app          |     engine = database.get_sqla_engine()
   superset_app          |   File "/app/superset/utils/memoized.py", line 50, 
in __call__
   superset_app          |     value = self.func(*args, **kwargs)
   superset_app          |   File "/app/superset/models/core.py", line 401, in 
get_sqla_engine
   superset_app          |     raise 
self.db_engine_spec.get_dbapi_mapped_exception(ex)
   superset_app          |   File "/app/superset/models/core.py", line 399, in 
get_sqla_engine
   superset_app          |     return create_engine(sqlalchemy_url, **params)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/__init__.py", line 
525, in create_engine
   superset_app          |     return strategy.create(*args, **kwargs)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/strategies.py", line 
61, in create
   superset_app          |     entrypoint = u._get_entrypoint()
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/url.py", line 172, in 
_get_entrypoint
   superset_app          |     cls = registry.load(name)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 
277, in load
   superset_app          |     raise exc.NoSuchModuleError(
   superset_app          | sqlalchemy.exc.NoSuchModuleError: Can't load plugin: 
sqlalchemy.dialects:cx_Oracle.oracle
   superset_app          | 
   superset_app          | The above exception was the direct cause of the 
following exception:
   superset_app          | 
   superset_app          | Traceback (most recent call last):
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/flask/app.py", line 1516, in 
full_dispatch_request
   superset_app          |     rv = self.dispatch_request()
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/flask/app.py", line 1502, in 
dispatch_request
   superset_app          |     return 
self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
   superset_app          |   File 
"/usr/local/lib/python3.8/site-packages/flask_appbuilder/security/decorators.py",
 line 89, in wraps
   superset_app          |     return f(self, *args, **kwargs)
   superset_app          |   File "/app/superset/views/base_api.py", line 113, 
in wraps
   superset_app          |     raise ex
   superset_app          |   File "/app/superset/views/base_api.py", line 110, 
in wraps
   superset_app          |     duration, response = time_function(f, self, 
*args, **kwargs)
   superset_app          |   File "/app/superset/utils/core.py", line 1533, in 
time_function
   superset_app          |     response = func(*args, **kwargs)
   superset_app          |   File "/app/superset/utils/log.py", line 244, in 
wrapper
   superset_app          |     value = f(*args, **kwargs)
   superset_app          |   File "/app/superset/views/base_api.py", line 83, 
in wraps
   superset_app          |     return f(self, *args, **kwargs)
   superset_app          |   File "/app/superset/databases/api.py", line 709, 
in test_connection
   superset_app          |     TestConnectionDatabaseCommand(item).run()
   superset_app          |   File 
"/app/superset/databases/commands/test_connection.py", line 124, in run
   superset_app          |     raise DatabaseTestConnectionDriverError(
   superset_app          | 
superset.databases.commands.exceptions.DatabaseTestConnectionDriverError: Could 
not load database driver: BaseEngineSpec
   ```
   And I used this syntax string connection: 
```cx_oracle+oracle://username:password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host_or_scan_address)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=db_service_name)))```
   
   Any guesses?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to