0

每天一次,我需要从 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'则上传数据但表设置(包括所有关系)被清除。

任何帮助将非常感激!

4

0 回答 0