千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > cur.execute用法介绍

cur.execute用法介绍

来源:千锋教育
发布人:xqq
时间: 2023-11-24 07:51:18 1700783478

一、cur.execute怎么用

在Python中,如果要执行一条SQL语句,需要借助数据库连接对象的execute()方法。而如果要从数据库中查询数据,则需要使用游标(Cursor)对象的execute()方法。其中,cur是代表游标对象。Cur.execute()可以执行任何SQL语句,但它最常用的用法是执行SELECT语句,获取查询结果集。

下面是一个例子,该例子中的SQL语句将查询一张名为"student"的表中的所有记录:


import pymysql
connection = pymysql.connect(
        host='localhost',  # 数据库所在的主机IP
        port=3306,         # 数据库使用的端口
        user='root',       # 连接数据库的用户名
        password='',       # 登录密码
        db='test',         # 数据库名称
        charset='utf8')    # 使用的字符集,一般为utf8

try:
    with connection.cursor() as cur:
        sql = "SELECT * FROM student"
        cur.execute(sql)
        rows = cur.fetchall()
        for row in rows:
            print(row)
finally:
    connection.close()

在上面的代码中,Cur.execute()方法接收一个SQL语句作为参数,并执行这条语句。Cur.fetchall()方法会从游标指向的结果集中返回所有行,这些行被作为元组嵌套列表返回到Python中。

二、cur.execute什么意思

Cur.execute() 方法是一个 Cursor 对象的方法,用于执行 SQL 查询。这个方法显然是对接口的基础操作之一,它能够接受任何类型的 SQL 命令,包括查询,插入,更新和删除。在使用 PyMySQL 连接数据库时,游标对象需要根据 SQL 命令的类型选择 Cur.execute() 的不同调用方式。

根据 SQL 命令类型调用 Cur.execute(SQL, params=None) 的方式是:其中 params 是 SQL 语句中应替换的变量,如果没有参数可传,则应将参数设置为 None。举例来说,对于下面这个查询语句:


SELECT *
FROM student
WHERE name = %s;

使用 Cur.execute() 方法时应该这样写:


name = input('请输入学生姓名: ')
sql = 'SELECT * FROM student WHERE name = %s;'
cur.execute(sql, (name,))

注意,%s 是在 SQL 查询中用于占位符的通用符,用来表示查询的条件。在 PyMySQL 中 %s 是用来替代 SQL 语句 placeholders 里的字符串参数的,这些参数存储在元组中,并在游标执行之前传递给 SQL 命令。传递参数时,必须将参数作为元组传递。如果你尝试按对象传递参数,你将看到编码错误。

三、cur.execute常用参数

1.参数化查询

参数化查询指的是,在查询或插入数据时,使用参数替换而不是直接将数据拼接到SQL语句中。这样做既可以提高执行效率,又能有效防止SQL注入攻击。例如,下面的SQL语句可以将数据插入到“student”表中:


INSERT INTO student (name, age) VALUES ('bob', 18)

使用参数化查询,可以将SQL语句修改为:


INSERT INTO student (name, age) VALUES (%s, %s)

在执行陈述时,将数据以元组的形式传递给execute()方法。


cur.execute(sql, (name, age))

2.获取最后插入的ID

在执行插入语句后,可以使用cur.lastrowid属性获取最后一个插入行的ID。


cur.execute("INSERT INTO student (name, age) VALUES (%s, %s)", ("bob", 18))
last_id = cur.lastrowid

3.批量执行SQL语句

当需要一次执行多个SQL语句时,可以使用execute()方法的多个调用。这种方式在处理大量数据时非常有用。


sql_1 = "INSERT INTO student (name, age) VALUES ('bob', 18)"
sql_2 = "INSERT INTO student (name, age) VALUES ('jane', 20)"
sql_3 = "INSERT INTO student (name, age) VALUES ('tom', 22)"
cur.execute(sql_1)
cur.execute(sql_2)
cur.execute(sql_3)

4.执行存储过程

在执行存储过程时,可以使用execute()方法来调用存储过程。在调用存储过程时,也可以提供参数。


cur.callproc('procedure_name', args)

其中,procedure_name是存储过程名称,args是参数列表。

5.执行动态SQL语句

在编写动态SQL语句时,可以使用execute()方法来执行这些语句。动态SQL语句是通过构建字符串来创建的,然后传递给execute()方法执行。


sql = "SELECT * FROM student WHERE name = %s" % name
cur.execute(sql)

要注意避免SQL注入攻击,应使用参数化查询。

结束语

总的来说,cur.execute()方法是Python与数据库交互的重要组成部分,通过execute()方法,我们可以在Python中执行各种SQL语句并获取返回结果。而在执行SQL语句时,需要注意参数化查询、获取最后插入的ID、批量执行SQL语句、执行存储过程以及执行动态SQL语句等常用参数。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT