python mysql连接器多语句
我试图让这个简单的语句列表不成功地工作。更令人困惑的是,前四条语句有效,而最后一条语句即使在我注释掉其余语句时也不起作用!最终语句得到以下响应: mysql.connector.errors.InterfaceError:在执行多个语句时使用multi=True codigo_postal的数据类型为int(11),而latitud和longitud是varchar 我尝试过创建新连接、新游标、新连接和游标。我已经尝试添加multi=“True”并将语句组合到一个操作中。我尝试将multi=“True”作为第二个和第三个参数添加到每个cur.execute()。我已经在Workbench中运行了该语句,以确保该语句有效且有效python mysql连接器多语句,python,mysql,Python,Mysql,我试图让这个简单的语句列表不成功地工作。更令人困惑的是,前四条语句有效,而最后一条语句即使在我注释掉其余语句时也不起作用!最终语句得到以下响应: mysql.connector.errors.InterfaceError:在执行多个语句时使用multi=True codigo_postal的数据类型为int(11),而latitud和longitud是varchar 我尝试过创建新连接、新游标、新连接和游标。我已经尝试添加multi=“True”并将语句组合到一个操作中。我尝试将multi=“T
但是在这里没有成功…在执行DML(数据操作语言)命令后,可以使用
commit
。另外,使用multi=True
可以更方便地完成此作业,但您需要运行由execute
创建的生成器
一般方法:
import mysql.connector
connection = mysql.connector.connect(user="REMOVED",
password="REMOVED",
host="REMOVED",
database="REMOVED")
cur = connection.cursor()
# Latitude - remove letter A
cur.execute("UPDATE tau._inm_exportados_test_csv SET latitud = REPLACE (latitud, 'a=','');")
print("Latitude change remove letter A - executed!")
# Longitude - remove letter A
cur.execute("UPDATE tau._inm_exportados_test_csv SET longitud = REPLACE (longitud, 'a=','');")
print("Longitude change remove letter A - executed!")
# Latitude - MODIFY COLUMN
cur.execute("ALTER TABLE tau._inm_exportados_test_csv MODIFY COLUMN latitud DECIMAL(10,6);")
print("Latitude - MODIFY COLUMN - executed!")
# Longitude - MODIFY COLUMN
cur.execute("ALTER TABLE tau._inm_exportados_test_csv MODIFY COLUMN longitud DECIMAL(10,6);")
print("Longitude - MODIFY COLUMN - executed!")
# Post Code data type change
cur.execute("ALTER TABLE tau._inm_exportados_test_csv MODIFY COLUMN codigo_postal varchar(255);)")
print("Post Code data type change to varchar(255) - executed!")
connection.commit()
cur.close()
connection.close()
使用multi=True
:
cur = connection.cursor()
def alter(state,msg):
try:
cur.execute(state)
connection.commit()
except Exception as e:
connection.rollback()
raise e
print(msg)
alter("ALTER TABLE address MODIFY COLUMN id int(15);","done")
alter("ALTER TABLE address MODIFY COLUMN email varchar(35);","done")
alter("ALTER TABLE address MODIFY COLUMN person_id int(35);","done")
它的multi=True不是multi=“True”这是我描述中的一个错误。我确实写了它的multi=True而不是multi=“True”。我刚刚注意到,事实上有一个拼写错误——在最后的语句末尾有一个不需要的括号!我刚刚重新运行了代码,它正在运行。谢谢你的意见。太好了,我刚刚实现了它
cur = connection.cursor()
def alter(state,msg):
result = cur.execute(state,multi=True)
result.send(None)
print(msg,result)
try:
alter("ALTER TABLE address MODIFY COLUMN id int(45)","done")
alter("ALTER TABLE address MODIFY COLUMN email varchar(25)","done")
alter("ALTER TABLE address MODIFY COLUMN person_id int(25);","done")
connection.commit()
except Exception as e:
connection.rollback()
raise e