Запросы, работающие в снежном веб-интерфейсе, но не всегда через соединитель python sqlalchemy - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть настройка подключения sqlalchemy к снежинке, которая работает, так как я могу выполнить некоторые запросы и получить результаты. Попытки запроса также зарегистрированы в моей истории user_query.

Мое соединение:

engine = create_engine(URL(
  user, password, account, database, warehouse, role
))

connection = engine.connect()

Однако в большинстве случаев мои запросы не возвращаются. Операционная ошибка (т.е. ошибка снежинки) https://docs.sqlalchemy.org/en/13/errors.html#error -e3q8 . Но эти же запросы будут нормально выполняться в веб-интерфейсе пользователя «снежинка».

Например, если я запускаю

test_query = 'SELECT * FROM TABLE DB1.SCHEMA1.TABLE1'
test = pd.read_sql(test_query, connection)

Когда я смотрю на свою историю запросов, она показывает, что запрос sqlalchemy завершился неудачно, а через секунду сам базовый запрос выполняется успешно. Однако я не уверен, куда этот вывод идет в настройке снежинки, и почему он не передается через мое соединение sqlalchemy. Что я вижу ...

  • Query = 'DES C TABLE / * sqlalchemy: _has_object * / "SELECT * FROM DB1". "SCHEMA1". "TABLE1"

    Код ошибки = 2003 Сообщение об ошибке = SQL Ошибка компиляции: база данных «SELECT * FROM DB1» не существует.

Затем, через 1 секунду, сам запрос будет работать успешно, но не ясно, куда это идет, поскольку он не будет отправлен по соединению.

  • Запрос = ВЫБРАТЬ * ИЗ ТАБЛИЦЫ DB1.SCHEMA1.TABLE1

Любая помощь высоко ценится! Спасибо * * 1030

Ответы [ 3 ]

0 голосов
/ 21 апреля 2020

Маловероятно, что запрос выполняется в WebUI и завершается с ошибкой синтаксиса при подключении через CLI или другие режимы.

Предложите распечатать запрос через CLI или через соединитель, запустить его в WebUI, а также заметить, из какой роли вы выполняете запрос.

Пожалуйста, поделитесь тем, что вы нашли.

0 голосов
/ 23 апреля 2020

Упомянутый запрос (SELECT * FROM TABLE DB1.SCHEMA1.TABLE1) не поддерживает синтаксис снежинки SQL.

Ссылка здесь поможет вам более подробно. Надеюсь, это поможет!

0 голосов
/ 20 апреля 2020

Вы можете попробовать добавить схему также здесь

engine = create_engine(URL(
    account = '',
    user = '',
    password = '',
    database = '',
    schema = '',
    warehouse = '',
    role='',
))

connection = engine.connect()
...