您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何将Pandas Dataframe写入Django模型

如何将Pandas Dataframe写入Django模型

我不知道将熊猫数据框写入Django模型的任何明确支持。但是,在Django应用中,除了使用ORM(例如通过Django模型)之外,您仍然可以使用自己的代码来读取或写入数据库

鉴于您极有可能在数据库中以前是由pandas’编写的to_sql,因此您可以继续使用相同的数据库和相同的pandas代码,只需创建一个可以访问该表Django模型即可

例如,如果您的熊猫代码正在写入sqlmytable,则只需创建一个如下模型:

class MyModel(Model):
    class Meta:
        db_table = 'mytable' # This tells Django where the sql table is
        managed = False # Use this if table already exists
                        # and doesn't need to be managed by Django

    field_1 = ...
    field_2 = ...

现在,您可以将Django中的该模型与现有的熊猫代码同时使用(可能在单个Django应用中)

要将相同的DB凭据获取到pandas sql函数中,只需从Django设置中读取字段,例如:

from django.conf import settings

user = settings.DATABASES['default']['USER']
password = settings.DATABASES['default']['PASSWORD']
database_name = settings.DATABASES['default']['NAME']
# host = settings.DATABASES['default']['HOST']
# port = settings.DATABASES['default']['PORT']

database_url = 'postgresql://{user}:{password}@localhost:5432/{database_name}'.format(
    user=user,
    password=password,
    database_name=database_name,
)

engine = create_engine(database_url, echo=False)

除了逐行读取数据框然后创建模型实例并保存它,我真的看不到什么方法,这确实很慢。您可能不愿进行一些批处理插入操作,但是既然熊猫to_sql已经为我们做到了,为什么还要打扰呢。当熊猫也可以更快地将Django查询集读取到熊猫数据框中时,这样做效率低下。

# Doing it like this is slow
for index, row in df.iterrows():
     model = MyModel()
     model.field_1 = row['field_1']
     model.save()
Go 2022/1/1 18:42:00 有368人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶