본문 바로가기
Python

SQLAchemy - Column expression, FROM clause, or other columns clause element expected, 오류 해결

by 올엠 2024. 6. 10.
반응형

SQLAchemy가 2.x로 업그레이드 되면서 과거 버전에서 사용하던 문법들을 간결화 한다는 목적으로 다수 지원하는게 없어져서 1.x 개발을 진행한 개발자들을 힘들게 한다.

따라서 개발자는 SQLAchemy 1.x버전을 계속 사용하거나, 문제가 있는 부분을 패치해서 해결해야 한다.

그중 오늘은  Column expression, FROM clause, or other columns clause element expected 으로 Metadata로 테이블 정보를 사용할 때 select 와 where를 함께 사용할 때 2.x에서 제거된 문법을 알아보고자 한다.

1.x 버전에서 사용되던 문법 방식이다.

select([table.c.x, table.c.y]).where(table.c.x == 1).frist()

이중에 select 중괄호 [] 부분이 삭제되었다고 할 수 있다.

아래 문서를 보면 보다 쉽게 이해할 수 있는데,

https://docs.sqlalchemy.org/en/20/changelog/migration_20.html#migration-core-usage

 

SQLAlchemy 2.0 - Major Migration Guide — SQLAlchemy 2.0 Documentation

Previous: Changes and Migration Next: What’s New in SQLAlchemy 2.0? Up: Home On this page: SQLAlchemy 2.0 - Major Migration Guide The 1.4->2.0 Migration Path 1.x -> 2.x Migration Overview 2.0 Migration - Core Connection / Transaction 2.0 Migration - Core

docs.sqlalchemy.org

아래와 같이 whereclause 파라메터를 더이상 지워하지 않는다고 한다. 즉 중괄호를 제거하면 문제는 해결된다.

# whereclause parameter no longer supported
stmt = select([table.c.x], table.c.id == 5)

 

반응형