SQLAlchemy Oracle INSERT ВОЗВРАЩАЕТСЯ в ошибку - PullRequest
0 голосов
/ 16 апреля 2019

Оператор вставки, взятый дословно из Руководство по ядру SQLAlchemy завершается неудачно при использовании с Oracle 11:

class OrmT(Base):
    __tablename__ = 'table1'
    cc = Column(String(6), primary_key=True)
    sector = Column(String(60))

t = OrmT.__table__
t.create(engine)
sel = select([t.c.cc, t.c.sector])
ins = t.insert().from_select(['cc', 'sector'], sel)
engine.execute(ins)
engine.commit()

Сообщение об ошибке выглядит следующим образом:

DatabaseError: (DatabaseError) ORA-00933: Команда SQL неправильно завершена

'INSERT INTO table1 (cc, sector) SELECT table1.cc,
 table1.sector \nFROM table1 RETURNING table1.cc INTO :ret_0' {'ret_0':
 <cx_Oracle.STRING with value None>}

Как настроить SQLAlchemy для ее исправления?Спасибо!

Обновление:

ins = t.insert(inline=True).from_select(['cc', 'sector'], sel)

устраняет проблему, отключив захват первичного ключа.Это далеко не идеальное решение, особенно когда нужны первичные ключи.

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