我正在尝试将变量传递给查询hive数据库,但我遇到了unicodedecoderError,如下所示。
以下是我的代码。
import pyodbc
import pandas as pd
var1 = 'UCSB'
my_connection = pyodbc.connect('DSN=MapR-64-Hive', autocommit=True)
my_cursor = my_connection.cursor()
my_query = """
select * from polaris_datasets.snmaster where parent_pid rlike ‘%s’ and created_date >= "2017-12-01 00:00:00"
"""
my_cursor.execute(my_query, var1)
,错误如下。
>>> my_cursor.execute(my_query, var1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 70: ordinal not in range(128)
我不确定这是语法问题还是编码问题所以我需要在某处更改?
答案 0 :(得分:2)
在%s周围用作单引号的第二个撇号不是ASCII字符。将单引号字符替换为'':
my_query = """
select * from polaris_datasets.snmaster where parent_pid rlike '%s' and
created_date >= "2017-12-01 00:00:00"
"""