SqlAlchemy: exportar tabla a nueva base de datos

Sólo recientemente comencé a usar python, ¡y me gusta! Sin embargo, estoy atrapado con SqlAlchemy.

Estoy intentando escribir un script que lee una base de datos MS SQL, consultar una tabla (todos los campos, solo un filtro en algunos campos) y escribir los resultados en una base de datos SQLite local.

(El objeto es escribir un adaptador de datos: realizar algunas consultas en la base de datos SQLite antes de exportar los resultados a otra base de datos. También es posible escribir en la tabla temporal en la base de datos de destino).

Puedo hacer una conexión y obtener resultados de consultas; puedo imprimirlos para saber que la parte funciona. Pero, ¿cómo puedo crear una nueva tabla basada en la estructura de los resultados de la consulta desde el servidor SQL de origen?

Esto funciona:

import sqlalchemy esd = sqlalchemy.create_engine( 'mssql+pyodbc://username:passwordSservername/dbname' ) for row in esd.execute( 'select * from ticket_actions where log_dt > \'2012-09-01\''): print( row.eFolderID ) 

Esto también funciona:

 import pyodbc cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=servername;DATABASE=dbname;UID=username;PWD=password') cursor = cnxn.cursor() for row in cursor.execute( 'select * from ticket_actions where log_dt > \'2012-09-01\''): print( row.eFolderID ) 

¿Alguna idea sobre cómo crear una nueva tabla con la misma estructura que tiene la consulta?

¡Gracias!

Consulte Creación y eliminación de tablas de bases de datos :

La creación … de tablas individuales se puede hacer a través del método create() … de Table .

Para leer la estructura de origen, vea Reflejar objetos de base de datos :

Se puede indicar a un objeto de Table que cargue información sobre sí mismo desde el objeto de esquema de base de datos correspondiente que ya existe dentro de la base de datos.
[…]
El sistema de reflexión también puede reflejar vistas.

Prueba esto:

 def copy_table(src_session, src_class, dst_session, dst_class): r=src_session.query(src_class).all() for i in r: j=dst_class() [setattr(j, col.name, getattr(i, col.name)) for col in i.__table__.columns] dst_session.add(j) se1=db1.Session() se2=db2.Session() copy_table(se1, db1.Book, se2, db2.Book) se2.commit()