Как сделать вставку в выбор с помощью SQLAlchemy from_select? - PullRequest
0 голосов
/ 31 мая 2019

У меня проблемы именно с использованием конструкции from_select в SQLAlchemy.Я не могу понять синтаксис правильно для 'SELECT *'.Каждый пример, который я видел, показывает явные имена столбцов.Моя проблема в строке ниже, я просто не могу понять синтаксис правильно:

meta.tables['XXXX'].insert().from_select(['*'],local_result)

Я видел пример, подобный приведенному ниже, но я не могу перевести его для выбора * по некоторым причинам:

sel = select([table1.c.a, table1.c.b]).where(table1.c.c > 5)
ins = table2.insert().from_select(['a', 'b'], sel)

Спасибо!

import urllib
import pyodbc
from sqlalchemy import create_engine
from sqlalchemy import MetaData
from sqlalchemy import Table
from sqlalchemy import select
from sqlalchemy import or_

local_params = urllib.parse.quote_plus("DRIVER={SQL Server};SERVER=XXX;DATABASE=XXX;Trusted_Connection=yes")
local_engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % local_params)
local_conn = local_engine.connect()
local_result = local_conn.execute("select * from dbo.XXX")

cloud_params = urllib.parse.quote_plus("DRIVER={ODBC Driver 17 for SQL Server};SERVER=XXXXX;DATABASE=XXXX;UID=XXXX;PWD=XXXX")
cloud_engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % cloud_params)
cloud_conn = cloud_engine.connect()

meta = MetaData()
meta.reflect(bind=cloud_conn)

meta.tables['XXXX'].insert().from_select(['*'],local_result)

#Tried This Also But Doesn't Work
#cloud_conn.execute(meta.tables['XXXX'].insert().from_select(['*'],local_result))

local_conn.close()
local_result.close()
cloud_conn.close()

Я получаю сообщение об ошибке:

sqlalchemy.exc.ArgumentError: FROM expression expected
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...