Как передать параметры в запрос улья при выполнении с помощью импыла? - PullRequest
0 голосов
/ 24 мая 2018

Я ссылался на Как использовать переменные в SQL-выражении в Python?

, но не смог получить ответ.

Я пробую то, что вы предложили, ноЯ получаю эту ошибку -: (

tbl_nm = 'EMPLOYEE_TABLE'

con.execute('select max(emp_id) from schema.?', tbl_nm)

Ошибка ниже:

Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/site-packages/impala/hiveserver2.py", line 302,

in execute configuration=configuration) File "/usr/local/lib/python2.7/site-packages/impala/hiveserver2.py", line 343,

in execute_async self._execute_async(op) File "/usr/local/lib/python2.7/site-packages/impala/hiveserver2.py", line 362,

in _execute_async operation_fn() File "/usr/local/lib/python2.7/site-packages/impala/hiveserver2.py", line 334,

in op parameters) File "/usr/local/lib/python2.7/site-packages/impala/interface.py", line 267,

in _bind_parameters

raise ProgrammingError("Query parameters argument should be a "
impala.error.ProgrammingError: Query parameters argument should be a list, tuple, or dict object

>

1 Ответ

0 голосов
/ 24 мая 2018

Вместо прямой передачи необработанного запроса улья в метод execute, рекомендуется сохранить запрос в виде строки в переменной и передать его для выполнения метода.

В вашем случае:

tbl_nm = 'EMPLOYEE_TABLE'
query = "select max(emp_id) from schema.{}".format(tbl_nm)
con.execute(query)

Дайте мне знать, если это поможет.

...