2017-06-23 49 views
0

我遇到了一個問題,我有一個SQL語句,當在我的MySQL Workbench中運行時正常執行,但是在使用python的mysql包函數cursor.execute()運行時不起作用。 SQL語句的問題是:Python mysql包沒有運行REPLACE語句

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) 
+1

什麼錯誤? – phd

+0

它靜靜地失敗。當我在我的SQL GUI上執行查詢時,它可以工作,但是當我通過python運行它時,它會失敗。 –

+0

你在哪裏叫'examine()'? – phd

回答

1

MySQL的Python庫是PEP 249兼容:

.commit()提交任何未決的事務到數據庫。

請注意,如果數據庫支持自動提交功能,則必須首先關閉此功能。可以提供接口方法以將其打開回 。

不支持事務的數據庫模塊應執行 該方法具有void功能。

呼叫cnx.commit()

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) 
+0

我打電話在我的主要上面。 –

+0

它打印了所有3個調試語句,但數據庫仍然未更新 –

+0

嘿,感謝您的幫助Cez的答案解決了它! –