SQLAlchemy 표현식에서 컴파일된 원시 SQL 검색
SQLAlchemy에서는 표현식 객체에서 컴파일된 원시 SQL 쿼리를 얻는 것이 어려울 수 있습니다. . 표현식 API는 편리한 인터페이스를 제공하지만 기본 SQL을 보기에서 숨깁니다.
매개변수 찾기에 어려움
query._params 사전을 검사했지만 발견했습니다. 쿼리가 성공적으로 실행되었음에도 불구하고 비어 있습니다. 이는 SQLAlchemy가 의도적으로 쿼리 개체에 매개 변수를 캡슐화하여 유지하기 때문입니다. 이렇게 하면 다양한 DB-API와의 호환성이 보장됩니다.
리터럴 바인딩 사용
그러나 SQLAlchemy 문서에서는 literal_binds를 사용하여 해결 방법을 제공합니다.
print(q.statement.compile(compile_kwargs={"literal_binds": True}))
이 접근 방식을 사용하면 매개변수가 포함된 쿼리 문을 인쇄할 수 있습니다. 단, 기본 유형(예: 정수, 문자열)에만 적합하며 사전 정의된 값이 없으면 바인딩 매개변수()를 지원하지 않습니다.
보안 주의사항
문서 신뢰할 수 없는 입력에 이 기술을 사용하지 말 것을 강력히 권고합니다. SQLAlchemy의 유형 강제 메커니즘은 완벽하지 않으며 보안 취약점으로 이어질 수 있습니다.
결론
기본적으로 직접 노출되지는 않지만 컴파일된 원시 SQL은 SQLAlchemy에서 검색할 수 있습니다. literal_binds 키워드 인수를 사용하는 표현식. 그러나 신뢰할 수 없는 데이터로 작업할 때는 주의를 기울이는 것이 중요합니다.
위 내용은 SQLAlchemy 표현식에서 원시 컴파일된 SQL을 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!