在python中使用cursor.execute()执行查询时出现问题



我的查询和游标中有一个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日期名称FROMtbl

WHEREuser_calculated_data.date>=@开始日期Anduser_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"))

最新更新