将 Pandas 数据框插入 Postgres

Mah*_*esh 2 python django postgresql dataframe pandas

我有一个 Pandas 数据框,我想将它插入到我的 Django 项目中的 Postgres 数据库中。

数据框有 5 列,数据库表有 6 列,而且,数据框列和 DB 列的顺序不一样。

那么,在合并两者之前,我是否必须确保数据框和数据库表中的列顺序相同?以及如何建议我如何处理丢失的列

Ole*_*kin 8

如果数据框的列名与数据库中的列名相同,则可以借助for connection使用方法将 df 直接插入到数据库表中:dataframe.to_sql()sqlalchemy

from myapp.models import Bob
from sqlalchemy import create_engine
from django.conf import settings

db_connection_url = "postgresql://{}:{}@{}:{}/{}".format(
    settings.DATABASES['default']['USER'],
    settings.DATABASES['default']['PASSWORD'],
    settings.DATABASES['default']['HOST'],
    settings.DATABASES['default']['PORT'],
    settings.DATABASES['default']['NAME'],
)

engine = create_engine(db_connection_url)

df.to_sql(Bob._meta.db_table, engine, if_exists='append', index=False, chunksize=10000)
Run Code Online (Sandbox Code Playgroud)

缺失的列将为空(或者如果在数据库级别而不是 django 级别定义,则数据库将设置默认值),或者您可以将缺失的列添加到具有所需值的数据框中。