Python mysql包没有运行REPLACE语句

时间:2017-06-23 19:14:27

标签: python mysql wordpress

我遇到一个问题,我有一个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)

3 个答案:

答案 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()

为了保存更改。