>  기사  >  백엔드 개발  >  SQLAlchemy에서 실제 SQL 쿼리를 표시하는 방법은 무엇입니까?

SQLAlchemy에서 실제 SQL 쿼리를 표시하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-18 13:20:03806검색

How to Display Actual SQL Queries in SQLAlchemy?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.