我正在努力将日期参数传递到我在Python中运行的SQL查询中。这些参数适用于我的常规SQL查询,但不适用于我的配置单元SQL查询,我不知道为什么?我收到“SQL包含0个参数标记,但提供了1个参数”错误,但仅适用于配置单元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])
我不知道是什么原因造成的。为配置单元连接传递参数是否需要其他格式?在我的搜索中,我没有看到这方面的任何东西,但也许我错过了
在Rishu的帮助下,找到了一种在执行前使用SQL字符串和.format()替换参数的方法
此错误主要是因为配置单元无法检测到任何参数的存在。在配置单元查询中传递参数的方法是使用
${hiveconf:<param name>}
。因此,基本上您在配置单元中的查询如下所示:在How to set variables in HIVE scripts上检查此答案
相关问题 更多 >
编程相关推荐