2016-09-25 82 views
0

因此,我是一個天真的Django開發人員,並且希望獲得與Django中的INSERT IGNORE相似的功能。有沒有辦法做到這一點?現在每當我嘗試在我的數據庫中保存一條記錄時,它會拋出(1364,Field沒有默認值)。 Django設置或mysql設置中是否應該有變化?如何設置Django忽略mysql錯誤並強制mysql插入記錄?

回答

0

您可以在Django中執行mySQL命令。

create_fields = ['f1', 'f2', 'f3'] 
values = [ 
    (1, 2, 3), 
    (4, 5, 6), 
    (5, 3, 8) 
] 
db_table = self.model._meta.db_table 

values_sql = [] 
values_sql.append("(%s)" % (','.join([ " %s " for i in range(len(create_fields))]),)) # correct format 

base_sql = "INSERT IGNORE INTO %s (%s) VALUES " % (db_table, ",".join(create_fields)) 
sql = """%s %s""" % (base_sql, ", ".join(values_sql)) 
cursor.executemany(sql, values)  
+0

有沒有辦法做到這一點,而不是寫手工查詢。 – Vamsi