ㅁㄴㅇㄻㄴㅇㄹ

[Python] NotImplementedError: Don't know how to literal-quote value ~ 본문

Python

[Python] NotImplementedError: Don't know how to literal-quote value ~

hanbin8269 2022. 7. 27. 01:34
Don't know how to literal-quote value ~ : sqlalchemy에게 이 문자를 어떻게 컴파일 해야 하는지 알려줘

 

결론부터 말하자면 Sqlalchemy 1.3.6 이상에서는 일어나지 않는 문제이다.

🔗 sqlalchemy changelog 링크 

 

문제 원인

# ============== example ==============

query = db.session.query(m.Account).filter(m.Account.created_datetime == datetime.now())

query.statement.compile(
	dialect=postgresql.dialect(),
	compile_kwargs={'literal_binds': True},
)

statement를 컴파일 할 때 생기는 문제인데,

Sqlalchemy 1.3.6 버전 이하의 postgresql에서 DateTime을 처리하는 literal processor가 구현되어 있지 않아 생긴 문제로 보인다.

문제 해결

sqlalchemy 창시자 mike bayer 가 손수 해결해줬다.

모든 데이터베이스 엔진에 대해 Datetime객체를 ISO 8601 포멧으로 치환해주도록 변경한 듯 하다. > 🔗 commit log

 

https://gerrit.sqlalchemy.org/c/sqlalchemy/sqlalchemy/+/3744/6/lib/sqlalchemy/sql/sqltypes.py#703

 

gerrit.sqlalchemy.org

 

'Python' 카테고리의 다른 글

[Python] metaclass 란  (0) 2022.06.06
TypeError: 'property' object is not iterable  (0) 2021.06.02
[Python] unittest 모든 테스트 코드 실행하기  (0) 2021.05.29
[Python] namespace란  (0) 2021.05.12
[Python] 메타클래스(metaclass) 란?  (0) 2021.05.11