Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

When connecting to the oracle database, an error is reported when making a line chart #7765

Closed
devilzhangzzz opened this issue Jun 24, 2019 · 13 comments · Fixed by #7767
Closed
Labels
!deprecated-label:bug Deprecated label - Use #bug instead

Comments

@devilzhangzzz
Copy link

ERROR:root:init() missing 1 required positional argument: 'col'

Traceback (most recent call last):
  File "G:\pyProduct\ss\superset\viz.py", line 407, in get_df_payload
    df = self.get_df(query_obj)
  File "G:\pyProduct\ss\superset\viz.py", line 194, in get_df
    self.results = self.datasource.query(query_obj)
  File "G:\pyProduct\ss\superset\connectors\sqla\models.py", line 834, in query
    query_str_ext = self.get_query_str_extended(query_obj)
  File "G:\pyProduct\ss\superset\connectors\sqla\models.py", line 481, in get_query_str_extended
    sql = self.database.compile_sqla_query(sqlaq.sqla_query)
  File "G:\pyProduct\ss\superset\models\core.py", line 901, in compile_sqla_query
    compile_kwargs={'literal_binds': True},
  File "<string>", line 1, in <lambda>
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\elements.py", line 462, in compile
    return self._compiler(dialect, bind=bind, **kw)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\elements.py", line 468, in _compiler
    return dialect.statement_compiler(dialect, self, **kw)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\dialects\oracle\base.py", line 685, in __init__
    super(OracleCompiler, self).__init__(*args, **kwargs)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\compiler.py", line 562, in __init__
    Compiled.__init__(self, dialect, statement, **kwargs)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\compiler.py", line 319, in __init__
    self.string = self.process(self.statement, **compile_kwargs)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\compiler.py", line 350, in process
    return obj._compiler_dispatch(self, **kwargs)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\visitors.py", line 91, in _compiler_dispatch
    return meth(self, **kw)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\dialects\oracle\base.py", line 875, in visit_select
    limitselect = sql.select([c for c in select.c])
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\util\langhelpers.py", line 855, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\selectable.py", line 616, in columns
    self._populate_column_collection()
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\selectable.py", line 3680, in _populate_column_collection
    c._make_proxy(self, key=key, name=name, name_is_truncatable=True)
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\elements.py", line 3780, in _make_proxy
    selectable, name=name if name else self.name
  File "G:\pyProduct\ss\env\lib\site-packages\sqlalchemy\sql\elements.py", line 4046, in _make_proxy
    is_literal=is_literal,
TypeError: __init__() missing 1 required positional argument: 'col'
@issue-label-bot issue-label-bot bot added the !deprecated-label:bug Deprecated label - Use #bug instead label Jun 24, 2019
@issue-label-bot
Copy link

Issue-Label Bot is automatically applying the label #bug to this issue, with a confidence of 0.91. Please mark this comment with 👍 or 👎 to give our bot feedback!

Links: app homepage, dashboard and code for this bot.

@villebro
Copy link
Member

Please provide Superset version info along with results from pip list

@devilzhangzzz
Copy link
Author

superset version:

release--0.33

pip list:

requirements.txt

alembic==1.0.0            # via flask-migrate
amqp==2.3.2               # via kombu
apispec[yaml]==1.2.0      # via flask-appbuilder
asn1crypto==0.24.0        # via cryptography
attrs==19.1.0             # via jsonschema
babel==2.6.0              # via flask-babel
billiard==3.5.0.4         # via celery
bleach==3.0.2
celery==4.2.0
certifi==2018.8.24        # via requests
cffi==1.11.5              # via cryptography
chardet==3.0.4            # via requests
click==6.7
colorama==0.3.9
contextlib2==0.5.5
croniter==0.3.29
cryptography==2.4.2
decorator==4.3.0          # via retry
defusedxml==0.5.0         # via python3-openid
flask-appbuilder==2.1.4
flask-babel==0.11.1       # via flask-appbuilder
flask-caching==1.4.0
flask-compress==1.4.0
flask-jwt-extended==3.18.1  # via flask-appbuilder
flask-login==0.4.1        # via flask-appbuilder
flask-migrate==2.1.1
flask-openid==1.2.5       # via flask-appbuilder
flask-sqlalchemy==2.4.0   # via flask-appbuilder, flask-migrate
flask-talisman==0.6.0
flask-wtf==0.14.2
flask==1.0.2
geopy==1.11.0
gunicorn==19.8.0
humanize==0.5.1
idna==2.6
isodate==0.6.0
itsdangerous==0.24        # via flask
jinja2==2.10.1            # via flask, flask-babel
jsonschema==3.0.1         # via flask-appbuilder
kombu==4.2.1              # via celery
mako==1.0.7               # via alembic
markdown==3.0
markupsafe==1.0           # via jinja2, mako
marshmallow-enum==1.4.1   # via flask-appbuilder
marshmallow-sqlalchemy==0.16.2  # via flask-appbuilder
marshmallow==2.19.2       # via flask-appbuilder, marshmallow-enum, marshmallow-sqlalchemy
numpy==1.15.2             # via pandas
pandas==0.23.4
parsedatetime==2.0.0
pathlib2==2.3.0
polyline==1.3.2
prison==0.1.0             # via flask-appbuilder
py==1.7.0                 # via retry
pycparser==2.19           # via cffi
pydruid==0.5.3
pyjwt==1.7.1              # via flask-appbuilder, flask-jwt-extended
pyrsistent==0.14.11       # via jsonschema
python-dateutil==2.6.1
python-dotenv==0.10.1
python-editor==1.0.3      # via alembic
python-geohash==0.8.5
python3-openid==3.1.0     # via flask-openid
pytz==2018.5              # via babel, celery, pandas
pyyaml==5.1
requests==2.22.0
retry==0.9.2
selenium==3.141.0
simplejson==3.15.0
six==1.11.0               # via bleach, cryptography, flask-jwt-extended, flask-talisman, isodate, jsonschema, pathlib2, polyline, prison, pydruid, pyrsistent, python-dateutil, sqlalchemy-utils, wtforms-json
sqlalchemy-utils==0.33.11
sqlalchemy==1.3.1
sqlparse==0.2.4
urllib3==1.24.3           # via requests, selenium
vine==1.1.4               # via amqp
webencodings==0.5.1       # via bleach
werkzeug==0.14.1          # via flask, flask-jwt-extended
wtforms-json==0.3.3
wtforms==2.2.1            # via flask-wtf, wtforms-json

requirements-dev.txt

coverage==4.5.3
flake8-commas==2.0.0
flake8-import-order==0.18.1
flake8-mypy==17.8.0
flake8-quotes==2.0.1
flake8==3.7.7
flask-cors==3.0.7
ipdb==0.12
mypy==0.670
mysqlclient==1.4.2.post1
nose==1.3.7
pip-tools==3.7.0
psycopg2-binary==2.7.5
pycodestyle==2.5.0
pyhive==0.6.1
pylint==1.9.2
python-dotenv==0.10.1
redis==2.10.6
statsd==3.3.0
thrift==0.11.0
tox==3.11.1

@devilzhangzzz
Copy link
Author

cx_Oracle version is 7.1.3

@villebro
Copy link
Member

Please see if upgrading to sqlalchemy==1.3.5 helps, there was a bug in the earlier versions that caused trouble when using Oracle with Superset.

@devilzhangzzz
Copy link
Author

I have upgraded sqlalchemy to 1.3.5, but still can't.
#7765 (comment)

@villebro
Copy link
Member

I was able to reproduce, will investigate shortly.

@devilzhangzzz
Copy link
Author

thank you very much @villebro

@villebro
Copy link
Member

@devilzhangzzz please check PR #7767

@devilzhangzzz
Copy link
Author

The test has passed, thank you again @villebro

@shahamit
Copy link

What is the 'SQLAlchemy URI' that we should give when adding a new oracle database? Specifying the below string with valid values isn't working out

engine = create_engine('oracle://scott:[email protected]:1521/service_name')

I am struggling to form the uri string for oracle. Kindly suggest.

Thanks.

@villebro
Copy link
Member

I think service_name should be equal to the TNS name. This is how the URI on my dev rig looks like (running Oracle locally on docker):

oracle+cx_oracle://system:XXXXXXXXXX@localhost:49161/?service_name=xe

@shahamit
Copy link

Thanks. This uri worked after installing oracle instant client on the server.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
!deprecated-label:bug Deprecated label - Use #bug instead
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants