먼저 레code를 업데이트한 다음 반환하려면 PostgreSQL에서 쿼리를 실행해야 합니다. 쿼리는 다음과 같습니다.
WITH x AS (
SELECT "ID" FROM JOB WHERE "STATE"= 1 LIMIT 1
)
UPDATE JOB y SET "STATE"= 2 FROM x WHERE x."ID"= y."ID"
RETURNING y.*
PostgreSQL 서버 자체에서는 잘 작동합니다. 그러나 pyodbc를 사용하여 Python에서 실행하면 작동하지 않습니다.
cursor.execute(query)
results= cursor.fetchall()
"결과가 없습니다. 이전 SQL은 쿼리가 아닙니다."라고 표시됩니다.
- 답변 # 1
cursor.execute가 여러 명령문을 처리할 수 없는 것 같습니다...
쿼리를 다시 작성하여 한 번에 하나씩 수행하거나 다음으로 분할해 보십시오.
https://stackoverflow.com/a/38857840
퍼팅 링크는 눈살을 찌푸리게 합니다. 여기에서 가장 관련성이 높은 부분을 인용하십시오. 또한 기능이 그대로 유지되도록 분할하려면 어떻게 해야 합니까?
Hamed2022-02-06 08:12:13
postgresql 및 python을 사용하는 경우 psycopg2(또는 psycopg2-binary)를 권장합니다. pyodbc를 사용하는 경우 사용 중인 드라이버를 표시해야 한다고 생각합니다(또는 최소한 Sybase 데이터 베이스)
Alex Turner2022-02-06 08:12:13