SQLAlchemy에서 실제 SQL 쿼리 인쇄
SQLAlchemy에서는 데이터베이스 작업에 해당하는 원시 SQL을 표시하는 방법을 이해하는 것이 중요합니다. . 이는 애플리케이션의 데이터베이스 통신 문제 해결, 디버깅 및 최적화에 필수적입니다.
일반 접근 방식
대부분의 경우 문의 SQL 문자열 표현을 쉽게 볼 수 있습니다. 또는 다음을 사용하여 쿼리:
<code class="python">print(str(statement))</code>
이는 ORM 쿼리와 원시 select() 표현식 모두에 적용됩니다.
특정 방언으로 컴파일
If 특정 방언이나 엔진에 대해 컴파일된 SQL을 확인해야 하는 경우 compile() 메소드를 사용할 수 있습니다:
<code class="python">print(statement.compile(someengine))</code>
또는 엔진 없이:
<code class="python">from sqlalchemy.dialects import postgresql print(statement.compile(dialect=postgresql.dialect()))</code>
인라인 바인딩된 매개변수
SQLAlchemy의 기본 동작은 SQL 문자열에 바인딩 매개변수를 사용하여 SQL 주입 공격을 방지하여 보안을 보장하는 것입니다. 바인딩된 매개변수와 인라인 실제 값을 우회하려면 compile_kwargs에서 literal_binds 플래그를 사용하세요.
<code class="python">print(s.compile(compile_kwargs={"literal_binds": True}))</code>
이 접근 방식에서 지원되지 않는 사용자 정의 유형의 경우 인라인 렌더링을 보장하기 위해 process_literal_param 메서드로 TypeDecorator를 구현하세요.
<code class="python">class MyFancyType(TypeDecorator): def process_literal_param(self, value, dialect): return "my_fancy_formatting(%s)" % value print( tab.select().where(tab.c.x > 5).compile( compile_kwargs={"literal_binds": True}) )</code>
위 내용은 SQLAlchemy에서 실제 SQL 쿼리를 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!