Ожидая VARIANT, но получил VARCHAR для колонки - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь вставить строку JSON в таблицу снежинок, определенную ниже:

from snowflake.sqlalchemy import VARIANT

class Identify(Base):
    __tablename__ = 'identify'

    event_id = Column(Integer, Sequence('event_id_seq'), unique=True, primary_key=True)
    user_id = Column(String, nullable=False)
    traits = Column(VARIANT, nullable=False)

Я пытаюсь вставить json_str:

json_str = '''
{
    "address": "xyz",
    "age": 32,
    "avatar": "xyz",
    "birthday": {
      "seconds": 20,
      "nanos": 10
     }
}
'''

Я использую следующий код для вставки json_str в таблицу

session = Session()
obj = Identify(user_id=request.user_id,
               traits=json_str)
session.add(obj)
session.commit()
session.close()

, что приводит к следующей ошибке: snowflake.connector.errors.ProgrammingError) 002023 (22000): SQL compilation error: Expression type does not match column data type, expecting VARIANT but got VARCHAR(3038) for column TRAITS

Есть ли способ вставитьjson_str или dict без написания оператора вставки SQL, использующего функцию преобразования TO_VARIANT?

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Документ API говорит, что VARIANT поддерживается для выборки данных путем преобразования в строку. Я не нашел другого способа хранить данные , кроме INSERT, преобразующего STRING в VARIANT.

0 голосов
/ 07 октября 2019

Это действительный JSON? Похоже, у вас непревзойденные скобки ...

-Paul-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...