我有一个mysql表飞行如下-
pkid from_city to_city
1 Melbourne BuenosAires
2 Budapest Tokyo
我的sqlalchemy模型如下-
class Flight(Base):
__tablename__ = 'flight'
pkid = Column('pkid', INTEGER(unsigned=True), primary_key=True)
from_city = Column('from_city', VARCHAR(50), nullable=False)
to_city = Column('to_city', VARCHAR(50), nullable=False)
现在在我的代码中,我有一些flights数据,我想将它们插入flighttable,甚至在提交之前就可以得到我的记录的主键。
下面是我的设想
阶段1:处理原始数据、数据操作并准备好字典列表,以便插入飞行表示例-
records = [{'from_city': 'Amsterdam', 'to_city': 'Toronto'},
{'from_city': 'Mumbai', 'to_city': 'Colombo'}]
阶段2:使用sql alchemy将数据插入flight表
第三阶段:找回你的名单 pkid
第二阶段新插入的记录
阶段4:将数据插入airline表,其中阶段3中的每个pkid都是airline表中的外键
阶段5:如果阶段4成功,提交所有事务。否则也将回滚第2阶段事务
从sqlalchemy文档来看,我认为与orm样式相比,executemany样式的核心插入是插入记录的最快方式,这使我想使用sqlalchemy核心插入选项。
但是通过使用核心插入,我是否会失去在实际提交之前获取阶段3中飞行记录主键的能力?或者还有什么方法可以得到主键?考虑到我有大量的数据要插入,如果我使用orm风格,我可以刷新并获取主键,但是我必须在性能上妥协?
我可以用 Dataframe.to_sql
但它带有自动提交功能,这是我不想要的
目前我是这样做的-
第一阶段
第2阶段
trans = connection.begin()
connection.execute(table.insert(), records)
不知道怎么做第三阶段。需要帮助吗
打算做第四阶段
准备进行第5阶段- trans.commit()
/ trans.rollback()
基于第4阶段
对第三阶段有什么建议或提示吗?
暂无答案!
目前还没有任何答案,快来回答吧!