簡體   English   中英

來自 Python 的 MySQL 使用 MySQLdb

[英]MySQL from Python using MySQLdb

我正在嘗試使用 MySQLdb python 包向 MySQL 數據庫添加值。 我的某些列不能為空,我正在努力尋找一種方法來檢查在嘗試將數據添加到我的表之前必須存在哪些列值。 目前我必須解析一個文件,提取一些鍵值對,找出應該將它們添加到哪些表中,然后使用以下方法添加它們:

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

我可以確保以正確的順序添加列,並且我可以獲取自動增量 ID 以鏈接不同的表。 我想做的是對每個表,檢查它是否包含不可為空的列,然后,如果需要,相應地修改輸入值,然后再嘗試將值添加到表中。 關於我如何做到這一點的任何建議/更好的想法?

您可以在 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()

cursor.execute MySQL 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM