SQLAlchemy: вставка результатов запроса в другую таблицу - PullRequest
7 голосов
/ 18 июня 2010

Итак, у меня есть некоторые результаты, которые я получил из таблицы install, например:

install = metadata.tables['install']  
results = session.query(install) #<sqlalchemy.orm.query.Query object>

Я хотел бы вставить эти же результаты в таблицу install_archive.

Я не совсем уверен, как это сделать, потому что я не хочу дублировать схему, определяя объект install-archive, а затем анализируя результаты в этом.Я считаю, что я не использую ORM, потому что я просто отражаю (это правильный термин?) Таблицы и запрашиваю их.

Все учебники, которые я вижу, используютORM.

Медленный способ сделать это в псевдокоде:

for id in result.all():
    install_archive.insert(install(id))

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 10 марта 2014
install_archive \
.insert() \
.from_select(names=['col1', 'col2'], # array of column names that your query returns
             select=session.query(install)) # your query or other select() object

Это приводит к (диалект PostgreSQL)

INSERT INTO install_archive (col1, col2)
SELECT install.col1, install.col2
FROM install;
0 голосов
/ 26 августа 2010

Вы можете сделать что-то подобное (изменив SELECT в соответствии с вашими потребностями). Просто убедитесь, что две таблицы имеют одинаковую структуру.

INSERT INTO `table1` (SELECT * FROM `table2`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...