Как исправить ошибку записи в базу данных Snowflake: снежинка.connector.errors.ProgrammingError) 001003 (42000) - PullRequest
1 голос
/ 26 марта 2019
ProgrammingError: (snowflake.connector.errors.ProgrammingError) 001003 (42000): SQL compilation error:
syntax error line 1 at position 13 unexpected 'sample'. [SQL: '\nCREATE TABLE sample (\n\t"Business Address" TEXT\n)\n\n'] (Background on this error at: http://sqlalche.me/e/f405)

Установили необходимый пакет: pip install --upgrade snowflake-sqlalchemy

from sqlalchemy import create_engine
engine = create_engine(
    'snowflake://{user}:{password}@{account}/SAMPLE_WORK/public?warehouse=****&role=myrole'.format(user='***',password='****',account='*****') 
)

df.to_sql('sample', engine, if_exists='replace', index=False)

1 Ответ

2 голосов
/ 26 марта 2019

SAMPLE является зарезервированным ключевым словом в Snowflake (и SQL: 2003), но кажется, что диалект snowflake-sqlalchemy не заключает его в кавычки.Быстрый взлом состоит в том, чтобы ввести его в набор зарезервированных слов:

# Before creating the engine etc.
from snowflake.sqlalchemy.base import SnowflakeIdentifierPreparer
# The set uses lower case, though the source set upper.
SnowflakeIdentifierPreparer.reserved_words.add("sample")
...