복붙노트

[SQL] SQLAlchemy의 통하여 실행될 때 검색 결과를 산출하지 테라 MERGE

SQL

SQLAlchemy의 통하여 실행될 때 검색 결과를 산출하지 테라 MERGE

그때 나는 영구적으로 데이터를 저장하기 위해 제작 한 또 다른 테이블에 해당 테이블을 MERGEing, 테라 서버의 임시 준비 테이블을 일부 데이터를 다운로드 만들 SQLAlchemy의와 함께 사용하기 파이썬를 시도하고있다. 나는 병합은 다음과 같은 문자열 인 SQL = slqalchemy.text (병합) 및 td_engine.execute (SQL)를 사용하고 있습니다 :

MERGE INTO perm_table as p
USING temp_table as t
ON p.Id = t.Id
WHEN MATCHED THEN
UPDATE
SET col1 = t.col1,
col2 = t.col2,
...
col50 = t.col50
WHEN NOT MATCHED THEN
INSERT (col1,
col2,
...
col50)
VALUES (t.col1,
t.col2,
...
t.col50)

이 스크립트는 오류 및 테라 데이타 스튜디오를 통해 제대로 SQL이 실행하지 않고 끝까지 모든 방법을 실행하지만 내가 SQLAlchemy의를 통해 실행할 때 어떤 이유로 테이블이 업데이트되지 않습니다. 그러나, 나는 또한 같은 파이썬 스크립트에서 perm_table 채워하고 벌금을 일한 삽입과 같은 다른 SQL 식을 실행했습니다. 아마 MERGE 및 SQLAlchemy의 콤보에 뭔가 특정이있다?

해결법

  1. ==============================

    1.아마도 MERGE 하나가 아닌 당신이 트랜잭션을 사용하지 않고, 직접 엔진을 사용하고 있기 때문에, 당신은 아마 등 INSERT들과 같은 작업을 변경 데이터를 감지하여 작동하는 자동 커밋의 SQLAlchemy의 버전에 의존 (당신의 부분에 보이지 않는 구성을 금지)하고 검출 동작. 시험

    아마도 MERGE 하나가 아닌 당신이 트랜잭션을 사용하지 않고, 직접 엔진을 사용하고 있기 때문에, 당신은 아마 등 INSERT들과 같은 작업을 변경 데이터를 감지하여 작동하는 자동 커밋의 SQLAlchemy의 버전에 의존 (당신의 부분에 보이지 않는 구성을 금지)하고 검출 동작. 시험

    sql = sqlalchemy.text(merge).execution_options(autocommit=True)
    td_engine.execute(sql)
    
  2. from https://stackoverflow.com/questions/42376142/teradata-merge-yielding-no-results-when-executed-through-sqlalchemy by cc-by-sa and MIT license