我遇到一个问题,我有一个SQL语句,当我在MySQL Workbench中运行时正常执行,但是当使用python运行时,mysql包函数cursor.execute()
不起作用。问题SQL语句是:
REPLACE INTO mmm_dev.samp_wp_links SELECT * FROM mmm_master.samp_wp_links;
该语句应该将mmm_master
的所有数据复制到mmm_dev
。下面是我用来执行查询的python代码:
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
def examine(cursor, cnx):
try:
qry = cursor.execute("REPLACE INTO mmm_dev.samp_wp_links SELECT * FROM mmm_master.samp_wp_links;")
except mysql.connector.Error as err:
print("Failed to select everything")
exit(1)
答案 0 :(得分:1)
致电examine()
。使用print()
进行调试:
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
def examine(cursor):
print("[DEBUG] 1: before query")
try:
qry = cursor.execute("REPLACE INTO mmm_dev.samp_wp_links SELECT * FROM mmm_master.samp_wp_links;")
print("[DEBUG] 2: after query")
except mysql.connector.Error as err:
print("Failed to select everything %s" % err)
exit(1)
print("[DEBUG] 3: success")
examine(cursor)
答案 1 :(得分:1)
MySQL Python库符合PEP 249:
.commit()将任何挂起的事务提交到数据库。
请注意,如果数据库支持自动提交功能,则必须这样做 最初关闭。可以提供接口方法以将其返回 上。
不支持事务的数据库模块应该实现 这个方法具有无效功能。
致电cnx.commit()
答案 2 :(得分:1)
您必须提交。
mydb.commit()
为了保存更改。