我使用sqlalchemy创建了两个引擎,一个引擎连接到Sql Server表dbo.mytable,另一个引擎(engine2)连接到PostgreSQL表employee.personnel。我想从dbo.mytable中获取数据,如果employee_id不存在,则将其插入employee.personnel中。我知道执行此操作的方法是遍历为Sql Server会话创建的查询,并将其与employee.personnel表中的内容进行比较。是否有更好的方法来执行此操作,例如在类对象中定义从SQL Server类继承到PostgreSQL的对象,从而不需要迭代过程。像从字面上将一个类映射到另一个类,然后将数据流过以进行插入?
#first database
engine = create_engine('mssql+pymssql://stuff')
metadata = MetaData(schema='dbo')
metadata.reflect(engine,only=['mytable']) #only map these tables
Base = automap_base(metadata=metadata)
Base.prepare()
MyTable = Base.classes.mytable
session = Session(bind=engine)
qry = session.query(name,employee_id).filter(age>17)
#second database
engine2 = create_engine('postgresql://stuff')
metadata2 = MetaData(schema='employee')
metadata2.reflect(engine2,only=['personnel'])
Base2 = automap_base(metadata=metadata2)
Base2.prepare()