2016-09-19 45 views
3

我試圖插入一些數據到我的MariaDB使用python腳本。 當我在控制檯中執行以下操作時,它完美地工作。MariaDB SQL語法附近錯誤括號')'爲python

INSERT INTO `Failure` (`faillure_id`, `testrun_id`, `failed_at`, `log_path`, `node`) 
     VALUES (2, 1, 'STEP8:RUN:RC=1', '/var/fail_logs','NodeA') 

向我顯示查詢正常。我可以看到表格正在填充。那裏沒有問題。

但是,當我使用python執行相同的SQL查詢時,出現一些錯誤。 這裏是我的代碼

conn = MySQLdb.connect("localhost","user","","DB") 
cursor = conn.cursor() 

cursor.execute("""INSERT INTO `Failure` (`testrun_id`, `failed_at`, `log_path`, `node`) VALUES (%s, %s, %s, %s)""",(testrun_id, failed_at, log_path, node)) 
conn.commit() 

這會產生以下錯誤

檢查對應於您的MariaDB的服務器版本使用附近「)正確的語法手冊,

人請幫助我瞭解錯誤來自何處。

+0

就像一個想法,這是唯一的查詢運行?這個錯誤可能會拋出一個不同的地方? –

+0

@ChrisForrence Hello Chris,我已經多次測試過這個查詢,每次失敗。然而,有時只要參數的數量小於3,查詢就會起作用。我現在正在使用一種解決方法。我已將我的工作放在答案部分。 – Shadid

回答

0

作爲一種變通我建立的查詢字符串這樣

sql_query = "INSERT INTO `Failure` (`testrun_id`, `failed_at`, `log_path`, `node`) VALUES " + "('" + str(testrun_id) + "', '" + str(failed_at) + "', '"+ log_path + "', '" + node + "')" 
cursor.execute(sql_query) 

不是很有效,但做這項工作現在。

+0

如果沒有轉義,您將自己打開SQL注入。 –

+0

是的,它現在是一個解決方法。我還沒有弄清楚爲什麼會發生。我試着用小php腳本和phpmyadmin相同的代碼只是爲了測試它..翻出來沒有錯誤存在。 – Shadid