Я использую Python3 и подключаюсь к Impala DB, используя пакет impala, как показано ниже:
#!/usr/bin/python3
import pandas as pd
from impala.dbapi import connect
from impala.util import as_pandas
import sys
def pull_from_dw(dw_conn, qry,qryparams):
cur = dw_conn.cursor()
if (qryparams is None):
cur.execute(qry)
else:
cur.execute(qry,qryparams)
custdata=as_pandas(cur)
return custdata
x = sys.argv[1]
query_str="select * from <table_name> where <column_name> = '{}';"
print(query_str)
dw_conn = connect(host='10.xxx.xx.xx', port=21050, use_ssl=True,
user='<username>',
password='<password>',
auth_mechanism='LDAP')
df = pull_from_dw(dw_conn,query_str,x)
print(df)
Я могу заменить напрямую, указав .format (x) в запросе sql. Однако мне нужно заменить переменную в вызывающей функции df = pull_from_dw (dw_conn, query_str, x) и получить ошибку, как показано ниже. Пожалуйста, помогите:
$ / usr / bin / python3 script1.py 'ab c'
impala.error.ProgrammingError: Аргументом параметров запроса должен быть список, кортеж или объект dict