【发布时间】:2020-07-02 04:55:14
【问题描述】:
我正在努力将日期参数传递到我在 Python 中运行的 SQL 查询中。这些参数适用于我的常规 SQL 查询,但不适用于我的 Hive SQL 查询,我不知道为什么?我收到“SQL 包含 0 个参数标记,但提供了 1 个参数”错误,但仅适用于 Hive SQL。 此代码按预期运行:
conn_sql = pyodbc.connect(f"DRIVER{{NetezzaSQL}};SERVER=server1;PORT=xxxx;DATABASE=SYSTEM;UID=xxxxxx;PWD=xxxxxx;")
# Define Cursor
cus_sql=conn_sql.cursor()
conn_hadoop = pyodbc.connect("DSN=Hive_Connection", autocommit=True)
start_date = input("Enter start date: ")
end_date = input("Enter end date: ")
sql = """SELECT user_id
FROM table
WHERE DATE_TIME >= CAST(? AS varchar(25)) AND a.DATE_TIME < CAST(? AS varchar(25))"""
df = pd.read_sql(sql,conn_sql,params=[start_date,end_date])
以下代码抛出 0 参数错误。
with pyodbc.connect("DSN=Hive_Connection", autocommit=True) as conn_hadoop:
df = pd.read_sql("""SELECT user_id
FROM table
WHERE date_time >= ? and date_time < end_time
""",conn_hadoop,params=[start_time,end_time])
我不知道是什么原因造成的。我是否需要不同的格式来为 Hive 连接传递参数?我在搜索中没有看到任何内容,但也许我错过了。
【问题讨论】: