2017-02-23 31 views
1

我想使用MySQLdb python包將值添加到MySQL數據庫。我的一些列不能爲空,並且在試圖向我的表中添加數據之前,我正努力找到一種方法來檢查列值必須存在。 在我有解析文件的那一刻,提取了一些關鍵的,值對,找出哪些表,這些應該被添加到,然後將它們添加使用:使用MySQLdb的Python中的MySQL

cursor.execute("""INSERT INTO %s (%s) VALUES (\"%s\")""" %(tbl, cols, vals) 

我可以確保我添加列的順序是正確的,我可以獲得自動遞增ID以鏈接不同的表。我想要做的是爲每個表檢查它是否包含一個不可爲空的列,然後在必要時相應地修改輸入值,然後嘗試將值添加到表中。任何建議/更好的想法,我怎麼能做到這一點?

回答

1

您可以在MySQL中測試INFORMATION_SCHEMA.COLUMNS表以確定列是否接受NULL值。

SELECT `IS_NULLABLE` 
FROM INFORMATION_SCHEMA.`COLUMNS` 
WHERE `TABLE_SCHEMA` = 'SchemaName' 
AND `TABLE_NAME` = tbl 
AND `COLUMN_NAME` = col 
; # returns YES/NO 

您應該改善cursor.execute(stmt, [params])語法的語法在參數來傳遞,而不是硬在文本SQL編碼它。這將是更可靠:

sql = "INSERT INTO %s (%s)" % (tbl, col) 
sql += " VALUES(%s)" 
cursor.execute(sql, [val]) 
connection.commit() 

MySQL Docs for cursor.execute

+0

謝謝,我已經在執行的python MySQL命令,和我然後使用返回值(是/否),以確定自己是否需要進一步加列/值。感謝您的語法建議。 – Conor

相關問題