que puede crear una tabla temporal de esta manera:crear una tabla temporal de una consulta utilizando sqlalchemy ORM
session.execute("CREATE TABLE temptable SELECT existingtable.id, "
"existingtable.column2 FROM existingtable WHERE existingtable.id<100000")
pero la nueva tabla es ilegible porque dice que no tiene clave primaria. existingtable.id
es la clave principal de la tabla existente, por lo que esperaba obtener el mismo tratamiento en la tabla temporal.
Sin embargo, preferiría encontrar alguna forma ORM de hacer esto de todos modos. Teniendo en cuenta:
temp_table = Table('temptable', metadata,
Column('id', Integer, primary_key=True),
Column('column2', Integer),
useexisting=True)
class TempTable(object):
pass
mapper(TempTable, temp_table)
temp_table.create(bind=session.bind, checkfirst=True)
if session.query(TempTable).delete(): #make sure it's empty
session.commit()
Cómo puede popular que temp_table
con algunos contenidos seleccionados de existingtable
sin hacer 100000 session.query.add(TempTable(...))
comandos? ¿O hay una forma de crear la tabla a partir de una consulta similar a la versión de SQL simple anterior?
curiosidades .. A sólo funcionaría si crea definición de tabla temporal con el primer enfoque? por ejemplo, crear table tablename (id primarykey, column1) Insertar en tablename select id, column2 de la tabla existente donde ... – AJP
@AJP Sí, creo que esta es la respuesta. Desafortunadamente, no hay un equivalente en ORM de SA de INSERT INTO y no es una forma sencilla de compilar mi consulta relativamente complicada en una sentencia sql. – Paul