在cursor.execute(query)mysql.connector Python中使用multi=True

在cursor.execute(query)mysql.connector Python中使用multi=True,python,mysql,Python,Mysql,我在python mysql.connector中有以下查询: query="SELECT `AUTO_INCREMENT`FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'cl55-mm-px-db' AND TABLE_NAME = 'dj_Venues';" cursor.execute(query) autoV=str(cursor.fetchone()) autoV=autoV.replace('(','').repla

我在python mysql.connector中有以下查询:

query="SELECT `AUTO_INCREMENT`FROM  INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'cl55-mm-px-db' AND   TABLE_NAME   = 'dj_Venues';"
cursor.execute(query)
autoV=str(cursor.fetchone())
autoV=autoV.replace('(','').replace(')','').replace(',','')
query="REPLACE INTO dj_Venues SET venueName = %s,venueAddress = %s,venueBands = %s,venueResident = %s,city=%s,country=%s;'"
variable=(venue,address,venueID,venueID1,city,country1)
cursor.execute(query,variable )          
query="SELECT `AUTO_INCREMENT`FROM  INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'cl55-mm-px-db' AND   TABLE_NAME   = 'dj_Events';"
cursor.execute(query)
autoE=str(cursor.fetchone())
autoE=autoE.replace('(','').replace(')','').replace(',','')
query="REPLACE INTO dj_Events SET eventName = %s,bandsintownID = %s,residentID=%s,date = %s,startTime=%s,sourceBands=%s,sourceResident=%s;'"
variable=(eventName,eventID,eventID1,date,start,source,source)
cursor.execute(query,variable )
query="REPLACE INTO dj_Master SET artistID = %s,eventID = %s,venueID = %s;'"
variable=(artistID,autoE,autoV)
cursor.execute(query,variable )
当我运行此脚本时,会出现以下错误:

    "Use multi=True when executing multiple statements")
mysql.connector.errors.InterfaceError: Use multi=True when executing multiple statements

我在每个
游标中添加了
multi=True
。execute()
,但是查询没有执行,所以我的表仍然是空的

您所有的语句都有
结尾处的分号。删除这些,在
cursor.execute()
中运行时不需要这些,创建错误消息的是这些:

query="SELECT `AUTO_INCREMENT`FROM  INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'cl55-mm-px-db' AND   TABLE_NAME   = 'dj_Venues'"
cursor.execute(query)
接下来,不要对一行使用
str()
;如果要连接值,请使用
str.join()

或者,如果只有一个值,则只索引到元组中:

autoE = cursor.fetchone()[0]
或者仅对一个变量使用元组赋值:

autoE, = cursor.fetchone()

如果行中有多个结果,则后者会抛出错误,这有助于在查询更改时查找错误。

请在语句末尾删除分号,我认为这就是为什么会收到这些错误消息。作为旁注:我很失望这个库选择忽略Python DB API规范并将
multi=True
添加到
execute
,而不是让您使用
cursor.executemany()
谢谢@MartijnPieters,您的回答帮助了我!
autoE, = cursor.fetchone()