2016-09-25 83 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