Python-pymysql에서 SQL 문에 매개변수를 전달하는 방법
방법 1: 매개변수를 전달하지 않음
방법 2: 배열을 사용하여 매개변수 전달
방법 3: 사전 사용 매개변수를 전달할 dict 유형
## 方式一、不传递参数 id = "01" name = "语文" sql = "select * from course where course_id = '%s' and course_name = '%s' ;" %(id,name) ## 执行数据库查询或命令 cursor.execute(sql)
## 方式二、使用数组传递参数 values = ['01','语文'] sql = "select * from course where course_id = %s and course_name = %s " ## 执行数据库查询或命令 cursor.execute(sql,values)
참고: 여기의 자리 표시자는 다음과 같습니다. %s, 문자열, 숫자 또는 다른 유형인지 여부에 관계없이 이 자리 표시자입니다. %s은(는) 인용할 수 없습니다.
와 첫 번째 글쓰기 방식의 차이점은 무엇인가요?
둘 사이의 차이점은 변수 구문 분석입니다.
퍼센트 기호 %를 사용하여 작성하는 첫 번째 방법은 Python 인터프리터가 이에 따라 %s를 바꾸는 것입니다. 이 접근 방식에는 문제가 있으며 특수 문자가 포함된 경우와 같이 일부 경우에는 올바르게 구문 분석할 수 없어 주입 공격에 취약해질 수 있습니다.
둘째, 변수는 실행 매개변수로 전달되고, MySQLdb의 내장 메소드는 변수를 적절한 내용으로 해석합니다.
일반적으로 두 번째 방법을 사용하고 변수를 매개변수로 전달하여 실행하는 것을 권장합니다.
## 方式三、使用字典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 중국어 웹사이트의 기타 관련 기사를 참조하세요!