Ошибка автоинкремента Snowflake + sqlalchemy

Я получаю сообщение об ошибке:

sqlalchemy.exc.ArgumentError: Column type DECIMAL(38, 0) on column 'id' is not compatible with autoincrement=True

При использовании официального примера на веб-сайте Snowflake (https://docs.snowflake.net/manuals/user-guide/sqlalchemy.html#auto-increment-behavior):

Column('id', Integer, Sequence('id_seq'), primary_key=True)

Есть идеи, каков правильный способ?


person morganics    schedule 19.06.2019    source источник


Ответы (1)


Я столкнулся с той же проблемой. Он работает, когда вы создаете таблицу, как описано в документации, а затем выполняете вставку с использованием того же объекта MetaData, но не работает, когда вы загружаете таблицу в новые метаданные. Я открыл для этого проблему в их репо.

Обходной путь - это явное получение и установка следующего значения последовательности:

seq = Sequence('id_seq')
nextid = connection.execute(seq)
connection.execute(t2.insert(), [ {'id': nextid, 'data': 'test_insert'}])
person ynux    schedule 24.10.2019