2016-09-16 43 views
1

所以在我對stackoverflow的研究沒有給我任何進一步的這裏是我的代碼(我不能發佈確切的代碼,因爲這是一個問題我在工作中)和問題:mysql.connector沒有用python命令插入,但是手動查詢工作

import mysql.connector 
.  
. 
. 
cnx = mysql.connector.connect(user, password, host, database) 
cursor = cnx.cursor() 

for-loop: 
    if condition: 
      cursor.execute("INSERT INTO table (the_columns) VALUES (%s)", (my_values)) 
      cnx.commit() 

我試圖手動插入已經和它的工作,但不知何故,我的Python代碼不會做插入。

的手動插入:

INSERT INTO table (column1,...,column7) VALUES (string1,....,string6, now())  

我沒有錯誤消息,我只能看看到數據庫中,看到新的valiues不存在。 還有其他人面臨這個問題嗎?任何人都可以建議可能是什麼問題?

+0

這個問題解決了,因爲以前開發過兩個實例具有相同的名稱和它在所有不是mSQL的錯誤一直存在的一個問題。 – dima

回答

1

可能是因爲你不必將變量放在「(」「)」之間? 您是否嘗試將值直接放入sql中,而不是包含它的變量? 你是什麼意思的「手動」?

無論如何,你應該把你所有的變量數組,通過這個數組作爲第二個參數之前:

query = (
    "INSERT INTO employees (emp_no, first_name, last_name, hire_date) VALUES (%s, %s, %s, %s)" 
) 
data = (2, 'Jane', 'Doe', datetime.date(2012, 3, 23)) 
cursor.execute(insert_stmt, data) 

編輯:我剛纔檢查,這就是主爲例,如果你谷歌你的問題...等你有沒有搜索這一點?學習夥計是最好的等待:在尋求幫助之前自己搜索。

+0

是的,我試過並通過手動的意思。不是沒有問題,它以前的工作完全一樣。我試圖刪除它們,它引發了一個語法錯誤。 – dima

+0

好的,試着把你的變量放在像例子這樣的數據數組中(編輯抱歉>。>) – xoxel

+0

我已經試過了,我搜索了一個小時,但它也沒有工作。爲什麼我會問在stackoverflow? – dima

0

嘗試將您的格式變量轉換爲元組。如果這不起作用。嘗試單獨創建查詢作爲變量並將其打印出來並直接在SQL控制檯中運行。你可能會得到更有意義的錯誤。

cnx = mysql.connector.connect(user, password, host, database) 
cursor = cnx.cursor() 

for-loop: 
    if condition: 
     cursor.execute("INSERT INTO table (the_columns) VALUES (%s)", (my_values,)) 
     cnx.commit() 

OR

cnx = mysql.connector.connect(user, password, host, database) 
cursor = cnx.cursor() 

for-loop: 
    if condition: 
     sql = "INSERT INTO table ({}) VALUES ({})".format(the_columns,my_values) 
     print(sql) 
     cursor.execute(sql) 
     cnx.commit() 
相關問題