批量插入字典列表

时间:2018-10-16 19:36:51

标签: python sqlalchemy

我已经定义了我的模型类,如下所示:

class MedicalPlan(Base):
    __tablename__ = "medical_plans"

    id = Column(Integer, nullable=False , primary_key=True)
    issuer_id = Column(Integer, ForeignKey('issuers.id'), nullable=False)
    service_area_id = Column(Integer).... and so 

我使用以下代码创建了一个会话,使用该代码我执行了大部分的sql操作:

def get_session():
    engine = create_engine('postgresql+psycopg2://postgres:postgres@localhost/db')
    Session = sessionmaker(engine)
    return Session()

我有我要插入的字典列表。

documentation中,我可以看到如下所示的内容:

connection.execute(table.insert(), [ 
        {'id':'12','name':'a','lang':'eng'},
        {'id':'13','name':'b','lang':'eng'},
        {'id':'14','name':'c','lang':'eng'},
    ]
)

我的问题是如何使用提供映射的方式使用模型类执行此类操作。

类似的事情不起作用:

conn.execute(MedicalPlans.insert(), list_of_dict)

1 个答案:

答案 0 :(得分:2)

映射类的表应为

MyTable.__table__

因此MedicalPlan.__table__.insert()应该可以工作。


Ilja关联的问题中还有其他选项,但大多数选项效率不高-bulk_insert_mappings接近。