2017-05-19 71 views
1

我試圖從python插入數據到我用phpmyadmin創建的MySQL數據庫中。我正在使用Python 3.這似乎沒有更新我的數據庫 - 這裏發生了什麼?使用Python更新MySQL數據庫3

import MySQLdb 

db = MySQLdb.connect("localhost", "uname", "password", "HORSERACES") 

cursor = db.cursor() 

sql = """INSERT INTO HORSERACES(Name, Event participant id, Market id, Event name, Event time) 
VALUES('Brimful of Asha', 1099999876, 2098574628, 'Worthing Cup Chase', 29385756568, 2017-05-30 00:00:00)""" 

try: 
    cursor.execute(sql) 
    db.commit() 
except: 
    db.rollback() 

db.close() 

print ('Success') 

我得到的錯誤是:

_mysql_exceptions.ProgrammingError:(1064,「您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的使用權語法手冊附近的 '參加者ID,市場ID,事件名稱,事件的時間)\ n \ tVALUES(' 阿莎的盈滿」,10' 位於第1" 行)

+0

如果try塊引發異常,它會默默回滾,並在你不知情的情況下說成功。不要默默吞下例外。 –

回答

2

這裏發生了什麼較差異常處理

try: 
    cursor.execute(sql) 
    db.commit() 
except: 
    db.rollback() 

    # Something goes wrong and you are rolling back silently 

至少你應該做

import traceback 
    traceback.print_exc() 
    db.rollback() 

然後你知道爲什麼插入沒有發生。

更新:添加回溯後,很容易發現mysql在列名上發生堵塞。列名中不允許有空格。如果你使用它們,你需要用反引號將它們轉義出來,但是它們在某些圖書館和客戶端仍然不能很好地發揮作用。

+0

你是對的 - 我不知道該怎麼做 - 已經包含了錯誤信息 – Davtho1983

+0

,很明顯'事件參與者ID'不是一個有效的列名 – e4c5

+0

好吧 - 我已經佔用了所有空間,錯誤I get稍有不同,但它仍然是關於VALUES的語法 – Davtho1983