我的查询和游标中有一个set
函数,后面跟着;
。execute认为我在运行多个查询,并说使用"multiple=true",但实际上我只运行一个查询。如何告诉python将我的整个字符串视为单个查询?
agent_report_query = """
set
@StartDate='2020-04-01 00:00:00'
;
set
@EndDate='2020-04-02 00:00:00'
;
SELECT
日期名称FROM
tbl
WHERE
user_calculated_data.date>=@开始日期And
user_calculated_data.date<结束日期
"""
然后我执行这个:
cursor2 = con2.cursor()
cursor2.execute(agent_report_query)
AgentReport = cursor2.fetchall()
print("AgentReport Query executed successfully!")
for i in AgentReport:
print(i)
结果是:
mysql.connector.errors.InterfaceError:执行多个语句时使用multi=True
如果我使用:cursor2.execute(agent_report_query,multi=False)
结果是:
mysql.connector.errors.InterfaceError:没有可从中获取的结果集。
你能帮我吗
您的查询有一些错误
首先,日期必须在报价中
Second You SELECT startemne的逗号太多
set @StartDate = '2020-04-01 00:00:00';
set @EndDate = '2020-04-02 00:00:00';
SELECT Date, Name FROM tbl
WHERE user_calculated_data.date >= @StartDate And user_calculated_data.date < @EndDate;
您还可以为每个查询创建一个自己的exute
agent_report_query = """
SELECT Date, Name FROM tbl
WHERE user_calculated_data.date >= @StartDate And user_calculated_data.date < @EndDate;
"""
cursor2.execute("set @StartDate = '2020-04-01 00:00:00';")
cursor2.execute("set @EndDate = '2020-04-02 00:00:00';")
cursor2.execute(agent_report_query)
或
你这样做了,我看不出你是如何使用用户定义的变量进行这个查询的
agent_report_query = """
SELECT Date, Name FROM tbl
WHERE user_calculated_data.date >= ? And user_calculated_data.date < ?;
"""
cursor2.execute(agent_report_query,("2020-04-01 00:00:00","2020-04-02 00:00:00"))