Skip to content

Driver fail on enums with empty string #147

@afpd

Description

@afpd

Describe the bug
Driver fail on Enums with empty string.

  File "/root/venv/lib/python3.9/site-packages/clickhouse_sqlalchemy-0.1.6-py3.9.egg/clickhouse_sqlalchemy/drivers/base.py", line 827, in reflecttable
    rv = super(ClickHouseDialect, self).reflecttable(
  File "/root/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 484, in reflecttable
    return insp.reflecttable(
  File "/root/venv/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py", line 664, in reflecttable
    for col_d in self.get_columns(
  File "/root/venv/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py", line 390, in get_columns
    col_defs = self.dialect.get_columns(
  File "<string>", line 2, in get_columns
  File "/root/venv/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py", line 52, in cache
    ret = fn(self, con, *args, **kw)
  File "/root/venv/lib/python3.9/site-packages/clickhouse_sqlalchemy-0.1.6-py3.9.egg/clickhouse_sqlalchemy/drivers/base.py", line 865, in get_columns
    return [self._get_column_info(row.name, row.type) for row in rows]
  File "/root/venv/lib/python3.9/site-packages/clickhouse_sqlalchemy-0.1.6-py3.9.egg/clickhouse_sqlalchemy/drivers/base.py", line 865, in <listcomp>
    return [self._get_column_info(row.name, row.type) for row in rows]
  File "/root/venv/lib/python3.9/site-packages/clickhouse_sqlalchemy-0.1.6-py3.9.egg/clickhouse_sqlalchemy/drivers/base.py", line 868, in _get_column_info
    col_type = self._get_column_type(name, format_type)
  File "/root/venv/lib/python3.9/site-packages/clickhouse_sqlalchemy-0.1.6-py3.9.egg/clickhouse_sqlalchemy/drivers/base.py", line 911, in _get_column_type
    type_enum = enum.Enum('%s_enum' % name, options)
  File "/usr/lib/python3.9/enum.py", line 362, in __call__
    return cls._create_(
  File "/usr/lib/python3.9/enum.py", line 486, in _create_
    enum_class = metacls.__new__(metacls, class_name, bases, classdict)
  File "/usr/lib/python3.9/enum.py", line 207, in __new__
    raise ValueError('Invalid enum member name: {0}'.format(
ValueError: Invalid enum member name: 

To Reproduce
Populate clickhouse with https://clickhouse.com/docs/en/getting-started/example-datasets/cell-towers/
CREATE TABLE cell_towers
(
radio Enum8('' = 0, 'CDMA' = 1, 'GSM' = 2, 'LTE' = 3, 'NR' = 4, 'UMTS' = 5),
....
)

Install apache superset and try to "Add dataset"

Expected behavior

Should work with an empty string in Enums.

Versions
clickhouse-sqlalchemy latest from git
Python version 3.9.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions