【发布时间】:2020-12-01 02:39:51
【问题描述】:
使用pandas to_sql函数时有没有办法插入外键?
我在 django 中处理上传的 Consultations (n=40k) 和 pandas,然后将它们添加到数据库 (postgres)。我逐行完成了这个工作,但这需要 15 到 20 分钟。这比我希望我的用户等待的时间要长,所以我正在寻找更有效的解决方案。
我尝试了 pandas to_sql,但在调用 to_sql 函数之前,我无法弄清楚如何将两个外键关系作为列添加到我的 consultations 数据帧中。有没有办法将 Patient 和 Praktijk 外键添加为 consultations 数据框中的列?
更具体地说,在逐行插入时,在数据库中创建新的咨询时,我使用 type Patient 或 Praktijk 的对象。但是,在数据框中,我不能使用这些类型,因此不知道如何正确添加外键。是否有可能是 object 或 int(患者的 id?)类型的值可以替代 Patient 类型的值,从而设置外键?
Consultation 模型:
class Consultation(models.Model):
# the foreign keys
patient = models.ForeignKey(Patient, on_delete=models.CASCADE, null=True, blank=True)
praktijk = models.ForeignKey(Praktijk, on_delete=models.CASCADE, default='')
# other fields which do not give trouble with to_sql
patient_nr = models.IntegerField(blank=True, null=True)
# etc
to_sql 电话:
consultations.to_sql(Consult._meta.db_table, engine, if_exists='append', index=False, chunksize=10000)
如果上述方法不可行,是否有其他更有效解决方案的提示?
【问题讨论】:
标签: django-models foreign-keys django-database django-postgresql pandas-to-sql