当前位置 : 主页 > 编程语言 > python >

Python pymysql向SQL语句中传参的方法有哪些

来源:互联网 收集:自由互联 发布时间:2023-07-30
目录 Python-pymysql如何向SQL语句中传参 方法一:不传递参数 方法二:使用数组传递参数 方法三:使用字典dict类型传递参数 Python-pymysql如何向SQL语句中传参方法一:不传递参数 ## 方式一、
目录
  • Python-pymysql如何向SQL语句中传参

    • 方法一:不传递参数

    • 方法二:使用数组传递参数

    • 方法三:使用字典dict类型传递参数

Python-pymysql如何向SQL语句中传参方法一:不传递参数
## 方式一、不传递参数
 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进行相应的替换。这种方法存在问题,某些情况下无法正确解析,例如当包含特殊字符时,可能会导致注入攻击的漏洞。

第二种,变量是作为execute的参数传入的,由MySQLdb的内置方法把变量解释成合适的内容。

一般情况下,建议使用第二种方法,把变量作为参数传递给execute。

方法三:使用字典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怎么编写一个点名器
下一篇:没有了
网友评论