>데이터 베이스 >MySQL 튜토리얼 >쿼리 성능을 향상하고 SQL 삽입을 방지하기 위해 Python에서 MySQL과 함께 준비된 문을 어떻게 사용할 수 있습니까?

쿼리 성능을 향상하고 SQL 삽입을 방지하기 위해 Python에서 MySQL과 함께 준비된 문을 어떻게 사용할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-11 13:32:10720검색

How Can I Use Prepared Statements with MySQL in Python to Improve Query Performance and Prevent SQL Injection?

Python에서 MySQL과 함께 준비된 문 사용

데이터베이스 작업 시 준비된 문을 사용하면 쿼리 성능이 크게 향상될 수 있습니다. Python에서는 준비된 문을 MySQL에서 활용할 수 있습니다.

Python의 매개변수화된 쿼리 형식

Python에서는 다음 형식을 사용하여 매개변수화된 쿼리를 생성할 수 있습니다.

cursor.execute("SELECT FROM tablename WHERE fieldname = %s", [value])

매개변수 표시자 %s는 실제 값에 대한 자리 표시자 역할을 합니다. 다양한 데이터베이스 드라이버는 다양한 매개변수화 스타일을 사용할 수 있습니다. 드라이버에 적합한 스타일을 결정하려면 드라이버 모듈을 가져오고 해당 paramstyle 속성을 인쇄할 수 있습니다.

지원되는 매개변수화 스타일

Python 개선 제안(PEP- 249), 다음 매개변수화 스타일이 지원됩니다:

  • 'qmark': 질문 마크 스타일(예: ...WHERE 이름=?)
  • '숫자': 숫자, 위치 스타일(예: ...WHERE 이름=:1)
  • '이름이 지정됨': 이름이 지정됨 스타일(예: ...WHERE 이름=:이름)
  • '형식': ANSI C printf 형식 코드 (예: ...WHERE 이름=%s)
  • 'pyformat': Python 확장 형식 코드(예: ...WHERE 이름=%(name)s)

사용 예

Prepared 문의 사용을 시연하려면 다음을 고려하세요. 예:

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="database_name"
)

cursor = db.cursor()

# Create a parameterized query
parameterized_query = "SELECT * FROM users WHERE name = %s"

# Execute the query with the provided parameter
cursor.execute(parameterized_query, ("John Doe",))

# Fetch the results
results = cursor.fetchall()

# Close the cursor and connection
cursor.close()
db.close()

매개변수화된 쿼리를 사용하면 데이터베이스가 쿼리 계획을 미리 준비할 수 있으므로 SQL 삽입 공격으로부터 코드가 보호되고 쿼리 성능이 향상됩니다.

위 내용은 쿼리 성능을 향상하고 SQL 삽입을 방지하기 위해 Python에서 MySQL과 함께 준비된 문을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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