cloudera / impyla

Python DB API 2.0 client for Impala and Hive (HiveServer2 protocol)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

hiveserver2 executemany bug, after replace parameter, the parameter in the sql will surrounded by ''

xhmz opened this issue · comments

commented

def _bind_parameters_dict(operation, parameters):
string_parameters = {}
for (name, value) in six.iteritems(parameters):
if value is None:
string_parameters[name] = 'NULL'
elif isinstance(value, six.string_types):
string_parameters[name] = "'" + _escape(value) + "'"
elif isinstance(value, datetime.date):
string_parameters[name] = "'{0}'".format(value)
else:
string_parameters[name] = str(value)

# replace named parameters by their pyformat equivalents
operation = re.sub(":([^\d\W]\w*)", "%(\g<1>)s", operation)

execute
cur.executemany('%s', [ ('use a',) , ('use b',) ])

error:
statement="'use a'"

Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 365, in executemany
self.execute(operation, parameters)
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 248, in execute
configuration=configuration)
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 289, in execute_async
self._execute_async(op)
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 308, in _execute_async
operation_fn()
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 286, in op
async=True)
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 919, in execute
return self._operation('ExecuteStatement', req)
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 849, in _operation
resp = self._rpc(kind, request)
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 817, in _rpc
err_if_rpc_not_ok(response)
File "/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py", line 604, in err_if_rpc_not_ok
raise HiveServer2Error(resp.status.errorMessage)
impala.error.HiveServer2Error: Error while compiling statement: FAILED: ParseException line 1:0 cannot recognize input near ''use a'' '' ''