在中使用multi=True光标.执行(查询)mysql.connectorPython

2024-03-28 14:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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 )

当我运行这个脚本时,我得到了以下错误:

^{pr2}$

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


Tags: autoexecuteschematabledjqueryvariableselect
1条回答
网友
1楼 · 发布于 2024-03-28 14:04:14

所有语句的末尾都有;分号。删除这些,在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()

^{pr2}$

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

autoE = cursor.fetchone()[0]

或者只对一个变量使用元组赋值:

autoE, = cursor.fetchone()

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

相关问题 更多 >