>  기사  >  백엔드 개발  >  Python pymysql이 매개변수를 SQL 문에 전달하는 방법은 무엇입니까?

Python pymysql이 매개변수를 SQL 문에 전달하는 방법은 무엇입니까?

PHPz
PHPz앞으로
2023-06-13 12:07:401292검색
Directory
  • Python-pymysql에서 SQL 문에 매개변수를 전달하는 방법

    • 방법 1: 매개변수를 전달하지 않음

    • 방법 2: 배열을 사용하여 매개변수 전달

    • 방법 3: 사전 사용 매개변수를 전달할 dict 유형

Python-pymysql을 사용하여 SQL 문에 매개변수를 전달하는 방법

방법 1: 매개변수를 전달하지 않음

## 方式一、不传递参数
 id = "01"
 name = "语文"
 sql = "select * from course where course_id = '%s'  and course_name = '%s' ;" %(id,name)
 ## 执行数据库查询或命令
 cursor.execute(sql)

방법 2: 배열을 사용하여 매개변수 전달

## 方式二、使用数组传递参数
  values = ['01','语文']
  sql = "select * from course where course_id = %s and course_name = %s "
  ## 执行数据库查询或命令
  cursor.execute(sql,values)

참고: 여기의 자리 표시자는 다음과 같습니다. %s, 문자열, 숫자 또는 다른 유형인지 여부에 관계없이 이 자리 표시자입니다. %s은(는) 인용할 수 없습니다.

와 첫 번째 글쓰기 방식의 차이점은 무엇인가요?

둘 사이의 차이점은 변수 구문 분석입니다.

퍼센트 기호 %를 사용하여 작성하는 첫 번째 방법은 Python 인터프리터가 이에 따라 %s를 바꾸는 것입니다. 이 접근 방식에는 문제가 있으며 특수 문자가 포함된 경우와 같이 일부 경우에는 올바르게 구문 분석할 수 없어 주입 공격에 취약해질 수 있습니다.

둘째, 변수는 실행 매개변수로 전달되고, MySQLdb의 내장 메소드는 변수를 적절한 내용으로 해석합니다.

일반적으로 두 번째 방법을 사용하고 변수를 매개변수로 전달하여 실행하는 것을 권장합니다.

방법 3: 사전 dict 유형을 사용하여 매개변수 전달

## 方式三、使用字典dict类型传递参数
  sql = "select * from course where course_id = %(course_id)s and course_name =  %(course_name)s ;"
  ## 将参数封装到字典
  #values = {'course_id':'01','course_name':'语文'}
  values = {'course_name':'语文','course_id':'01'}
  ## 执行数据库查询或命令
  cursor.execute(sql,values)

이런 방식으로 전달된 매개변수 간의 해당 관계는 비교적 명확합니다. 특히 매개변수가 많은 경우 사전을 사용하면 매개변수가 올바른 순서로 전달되도록 할 수 있습니다.

위 내용은 Python pymysql이 매개변수를 SQL 문에 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제