首页 > 数据库 >Python-pymysql如何向SQL语句中传参

Python-pymysql如何向SQL语句中传参

时间:2023-03-12 10:56:47浏览次数:37  
标签:name Python pymysql course 中传参 sql 参数 ## id

方法一:不传递参数

## 方式一、不传递参数
 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)

这种方式,传递的参数对应关系比较清晰。尤其是参数比较多时,使用字典,可以保证传递参数的顺序正确。

标签:name,Python,pymysql,course,中传参,sql,参数,##,id
From: https://www.cnblogs.com/yeyuzhuanjia/p/17207743.html

相关文章

  • 五种Python中字典的高级用法
    1.引言Python中的字典是一种非常有用的数据结构,它允许大家存储键值对。通常来说,字典灵活、高效且易于使用,是Python中最常用的数据结构之一。字典通常被用于统计频率、映射......
  • Python创建虚拟环境
    1、什么是虚拟环境虚拟环境的意义,就如同虚拟机一样,它可以实现不同环境中Python依赖包相互独立,互不干扰。 example:假设我们服务器中有两个项目,都是用到了一个第三方......
  • Python 并发
    1、并发与并行并行:多个程序同时运行并发:伪并行,看起来是同时并行,其实质是利用了多道技术无论是并行还是并发,在用户眼里看起来都是同时运行的,不管是线程还是进程,都是只是......
  • [oeasy]python0105_七段数码管_7_SEGMENT_数码管驱动_4511
    七位数码管回忆上次内容上次回顾了指示灯辉光管 并了解了驱动(driver)驱动就是控制设备工作的人(模块)  辉光管离我们的......
  • python - jpg转pdf
    1.需要先安装两个模块pip3installfitzpip3installPyMuPDF2.脚本如下importfitzimportosfromfunctoolsimportcmp_to_key#过滤掉当前目录除jpg以外的文......
  • 关于使用python脚本将同级的其他目录下的所有文件根据年份移动到当脚本位置的年份目录
    今天收到一个请求,要将一个目录下的所有文件,根据年份进行分类放到年份目录,目录中近20万个文件但只移动指定后缀的,年份判断标准很重要和严谨,一定是_年份数字其他数字.后缀......
  • Python 决定迁移到 GitHub
    Python已经决定迁移到GitHub,虽然有人公开说反对迁移到GitHub,但还是有很多人会在一定程度上使用GitHub,而且几位核心的开发者也倾向于选择GitHub。Python在很久之前为了......
  • 实验1 Python开发环境使用和编程初体验
    实验任务1:task1_1实验源码:#task1_1print的使用print('hey,u')#输出单个字符串或者单个变量print('hey','u')x,y,z=1,2,3print(x,y,z)#输出多个数据项,用“,”......
  • 关于python中使用break语句跳出两层循环的方法实现
    break多用于for循环语句中,用于跳出当前for循环,不对当前for循环后面的元素进行遍历操作了for循环语句中,如果使用到break语句,一般都是因为达到了某个条件,才执行break的,因此......
  • 创建python虚拟环境(深度学习)
    本文根据杨力-中量大AI老师的配置进行记录学习:1.打开cmd     2.创建虚拟环境  3.激活虚拟环境 4.文件夹中的目录结构  以后想用python就来这里就......