Python pymysql向SQL语句中传参的多种方法

作者:ministep88 时间:2024-01-13 05:10:00 

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)

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

来源:https://www.cnblogs.com/ministep/p/17401141.html

标签:Python,sql,传参
0
投稿

猜你喜欢

  • Python数据可视化之Pyecharts使用详解

    2022-10-19 17:31:12
  • python中的decimal类型转换实例详解

    2022-05-01 15:05:21
  • 面向对象CSS FAQ[译]

    2009-10-27 15:59:00
  • pyqt5-tools安装失败的详细处理方法

    2021-08-22 21:34:00
  • JS实现图片手风琴效果

    2023-08-23 19:28:27
  • 快速掌握ASP连接11种数据库的常用语法

    2008-11-28 15:32:00
  • Python排序搜索基本算法之插入排序实例分析

    2023-12-28 14:20:25
  • 跟老齐学Python之让人欢喜让人忧的迭代

    2022-10-02 14:33:23
  • HTML5 JS压缩图片并获取图片BASE64编码上传

    2024-04-17 10:25:44
  • MySQL查询优化之查询慢原因和解决技巧

    2024-01-23 13:36:09
  • node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能

    2023-07-15 17:55:01
  • 用户体验设计中用到的统计学方法

    2009-07-12 08:26:00
  • JS实现利用两个队列表示一个栈的方法

    2024-02-26 12:41:03
  • ASP模拟POST提交数据的方法

    2010-01-14 20:06:00
  • Python如何利用Har文件进行遍历指定字典替换提交的数据详解

    2022-04-22 22:35:17
  • JS上传图片前实现图片预览效果的方法

    2024-04-30 10:10:12
  • 用画为5.12地震受灾同胞们祈福

    2008-05-20 12:08:00
  • Python 编程操作连载之字符串,列表,字典和集合处理

    2021-08-16 11:27:54
  • Django打印出在数据库中执行的语句问题

    2024-01-21 04:26:41
  • X/HTML5 v.s. XHTML2(II)

    2008-06-18 13:19:00
  • asp之家 网络编程 m.aspxhome.com