sqlalchemy: IndexError: tuple index out of range with python3.6 and SQlAlchemy 1.4.45

Describe the bug

Getting exception while trying below code -

        with op.batch_alter_table("<table_name>") as batch_op:

            batch_op.create_check_constraint(
                "ck_ssl_mode",
                "ssl_mode IN ('allow', 'prefer', 'require', 'disable', \
                'verify-ca', 'verify-full')"
            )

To Reproduce

with op.batch_alter_table("<table_name>") as batch_op:

            batch_op.create_check_constraint(
                "ck_ssl_mode",
                "ssl_mode IN ('allow', 'prefer', 'require', 'disable', \
                'verify-ca', 'verify-full')"
            )

Error

File "/usr/pgadmin4/web/migrations/versions/09d53fca90c7_.py", line 55, in upgrade
    'verify-ca', 'verify-full')"
  File "/usr/lib64/python3.6/contextlib.py", line 88, in __exit__
    next(self.gen)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/alembic/operations/base.py", line 374, in batch_alter_table
    impl.flush()
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/alembic/operations/batch.py", line 125, in flush
    **self.reflect_kwargs
  File "<string>", line 2, in __new__
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 619, in __new__
    metadata._remove_table(name, schema)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__
    with_traceback=exc_tb,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 614, in __new__
    table._init(name, metadata, *args, **kw)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 694, in _init
    resolve_fks=resolve_fks,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 729, in _autoload
    _extend_on=_extend_on,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 804, in reflect_table
    reflection_options,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 998, in _reflect_fk
    **reflection_options
  File "<string>", line 2, in __new__
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 619, in __new__
    metadata._remove_table(name, schema)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__
    with_traceback=exc_tb,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 614, in __new__
    table._init(name, metadata, *args, **kw)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 694, in _init
    resolve_fks=resolve_fks,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 729, in _autoload
    _extend_on=_extend_on,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 804, in reflect_table
    reflection_options,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 998, in _reflect_fk
    **reflection_options
  File "<string>", line 2, in __new__
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 619, in __new__
    metadata._remove_table(name, schema)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__
    with_traceback=exc_tb,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 614, in __new__
    table._init(name, metadata, *args, **kw)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 694, in _init
    resolve_fks=resolve_fks,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/sql/schema.py", line 729, in _autoload
    _extend_on=_extend_on,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 824, in reflect_table
    reflection_options,
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 1095, in _reflect_unique_constraints
    constraints = self.get_unique_constraints(table_name, schema)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 632, in get_unique_constraints
    conn, table_name, schema, info_cache=self.info_cache, **kw
  File "<string>", line 2, in get_unique_constraints
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 55, in cache
    ret = fn(self, con, *args, **kw)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/dialects/sqlite/base.py", line 2410, in get_unique_constraints
    **kw
  File "<string>", line 2, in get_indexes
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 55, in cache
    ret = fn(self, con, *args, **kw)
  File "/usr/pgadmin4/venv/lib64/python3.6/site-packages/sqlalchemy/dialects/sqlite/base.py", line 2521, in get_indexes
    if row[4]:
IndexError: tuple index out of range

Versions

  • OS: Centos7
  • Python: 3.6.
  • SQLAlchemy: 1.4.45
  • Database: Sqlite3
  • DBAPI (eg: psycopg, cx_oracle, mysqlclient): psycopg

Additional context

No response

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 1
  • Comments: 18 (14 by maintainers)

Commits related to this issue

Most upvoted comments

ok so the issue is sqlite 3.8 added partial indexes, so previously index_list it would have 4 cols, not 5

@yogeshmahajan-1903 can you confirm that you are using sqlite3 3.32.3?

Sorry my bad. 3.32.3 is used with python 3.9. Version used with python 3.6 is 3.7.17 on cents 7

(venv) [root@localhost pgadmin]# sqlite3 ./pgadmin4.db 
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select sqlite_version();
3.7.17
sqlite>