每天一次,我需要从 2 个表中删除所有数据并上传新数据。“产品”表一切顺利,但我无法填充“价目表”表,因为表上有外键关系。
模型.py:
class product(models.Model):
EAN = models.CharField(primary_key=True, unique=True, max_length=13)
Name = models.CharField(max_length=50)
class vendor(models.Model):
vendor = models.CharField(primary_key=True, unique=True, max_length=7)
Name = models.CharField(max_length=50)
class pricelist(models.Model):
EAN = models.ForeignKey(product, on_delete=models.CASCADE)
vendor = models.ForeignKey(vendor, on_delete=models.CASCADE)
Qty = models.CharField(max_length=15)
应用程序.py ...
def app
...
product_list = product_list[["EAN", "Name"]]
session.execute("use intranet; SET FOREIGN_KEY_CHECKS = 0; DELETE FROM product_list; DELETE FROM pricelist; SET FOREIGN_KEY_CHECKS = 1;")
session.flush()
session.commit()
product_list.to_sql("product_list", con=engine, if_exists='append', chunksize=1000, index=False)
df = df[["EAN", "vendor", "Qty"]]
# everything works until here:
df.to_sql("pricelist", con=engine, if_exists='append', chunksize=1000, index=False)
我得到的错误:
(1452, 'Cannot add or update a child row: a foreign key constraint fails
如果我用 if_exists='replace' 替换if_exists = 'append'则上传数据但表设置(包括所有关系)被清除。
任何帮助将非常感激!