[파이썬][Django] Raw SQL 쿼리 실행 방법과 예제

Django에서 Raw SQL 쿼리를 실행하는 방법과 예제를 살펴보겠습니다. Raw SQL 쿼리는 Django ORM을 통하지 않고 직접 SQL 쿼리를 실행할 때 사용됩니다.

Raw SQL 쿼리 실행 방법

connection 객체를 사용하여 Raw SQL 쿼리를 실행할 수 있습니다. connection은 Django의 기본 데이터베이스 연결을 나타내는 객체입니다. 아래는 Raw SQL 쿼리를 실행하는 방법입니다:

from django.db import connection

def run_raw_sql_query():
    with connection.cursor() as cursor:
        cursor.execute("SELECT * FROM your_table WHERE your_condition")
        results = cursor.fetchall()
    return results

위의 코드에서 with connection.cursor() 블록을 사용하여 커서를 얻고, execute() 메서드를 사용하여 SQL 쿼리를 실행합니다. fetchall()로 결과를 가져올 수 있습니다.

Raw SQL 쿼리 예제

아래는 “Product” 테이블에서 특정 조건을 만족하는 데이터를 Raw SQL 쿼리를 사용하여 검색하는 예제입니다:

from django.db import connection

def find_products_with_price_above_threshold(threshold):
    with connection.cursor() as cursor:
        query = "SELECT * FROM product WHERE price > %s"
        cursor.execute(query, [threshold])
        results = cursor.fetchall()
    return results

위의 코드는 “price” 필드가 특정 임계값을 초과하는 “Product” 테이블의 데이터를 검색합니다.

주의: Raw SQL 쿼리를 사용할 때는 SQL 인젝션과 같은 보안 문제에 주의해야 합니다. 사용자 입력을 쿼리에 직접 포함시키지 않고 항상 매개변수화된 방식으로 실행하는 것이 중요합니다.

Raw SQL 쿼리는 복잡한 쿼리를 직접 실행할 때 유용하지만, 보안과 유지 관리의 측면에서 Django ORM을 사용하는 것이 좋습니다.