Я определил свой класс модели, как показано ниже:
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()
У меня есть список словарей, которые я хочу вставить как массовую вставку.
В документация я вижу, куда можно вставить, используя что-то вроде ниже:
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)






Таблица сопоставленного класса должна быть доступна как
MyTable.__table__
следовательно, MedicalPlan.__table__.insert() должен работать.
В вопросе, на который ссылается Илья, есть и другие варианты, но большинство из них не столь эффективны - bulk_insert_mappings подошел бы близко.
conn.execute (MedicalPlan .__ tablename __. insert (), list_of_dict) дает мне 'str' object has no attribute 'insert'
Внимательно прочитав ответ и сравнив с тем, что вы только что написали.
он работает .. спасибо .. хотел проверить, могу ли я использовать его с объектом сеанса, который я создаю ??
@themaster Да. Session.execute. Хотя вам также может понадобиться грязное обращение ...
@AnttiHaapala Не могли бы вы сообщить мне, как это сделать с Session.execute?
См. stackoverflow.com/questions/3659142/…