python学习笔记-数据库09_pyMySQL

  • 时间:2025-10-29 01:25 作者: 来源: 阅读:4
  • 扫一扫,手机访问
摘要: Python 与 MySQL 数据通讯需要安装第三方包:pyMySQL,安装教程如下: pip3 安装 sudo apt install python3-pip pymysql安装 sudo pip3 install pymysql 安装命令:sudo pip3 install 第三方包名 卸载命令:sudo pip3 uninstall 第三方包名

Python 与 MySQL 数据通讯需要安装第三方包:pyMySQL,安装教程如下:

pip3 安装
sudo apt install python3-pip

pymysql安装
sudo pip3 install pymysql

安装命令:sudo pip3 install 第三方包名
卸载命令:sudo pip3 uninstall 第三方包名
查看第三方包信息: pip3 show 第三方包名
pip3 list: 查看使用pip命令安装的第三方包列表

如果实现将10000条数据插入到MySQL数据库?
如果使用之前学习的MySQL客户端来完成这个操作,那么这个工作量无疑是巨大的,可以通过使用程序代码的方式去连接MySQL数据库,然后对MySQL数据库进行增删改查的方式,实现10000条数据的插入,像这样使用代码的方式操作数据库就称为数据库编程

步骤如下:

1、导入pymysql包
import pymysql

2、创建连接对象
调用pymysql模块中的connect()函数来创建连接对象,代码如下
conn = connect(参数列表)

  • 参数host:连接mysql主机,如果本机是 localhost

  • 参数port:连接mysql主机的端口号,默认是3306

  • 参数user : 连接的用户名

  • 参数password : 连接的密码

  • 参数database: 数据库的名称

  • 参数charset : 通信采用的编码方式,推荐使用utf8

连接对象操作说明:
关闭连接: conn.close()
提交数据: conn.commit()
撤销数据: conn.rollback()

3、获取游标对象
获取游标对象的目标是要执行sql语句完成对数据库的增、删、改、查操作。代码如下:
// 调用连接对象的cursor()方法获取游标对象
cur = conn.cursor()

游标操作说明:

  • 使用游标执行sql语句:execute(operation[parameters]) 执行sql语句,返回受影响的行数,主要用于执行insert、update、delete、select等语句

  • 获取查询结果聚焦的一条数据cur.fetchone()返回一个元组,如(1, 张三 )

  • 获取查询结果中的所有数据cur.fetchall()返回一个元组,如((1, 张三 ),(2, 李四 ))

  • 关闭游标:cur.close() 表明和数据库操作完成

# 1.0 导入pymysql包
import pymysql

if __name__ ==  __main__ :
    # 2.0 创建连接对象
    conn = pymysql.connect(host= localhost ,
                           port=3306,
                           user= root ,
                           password= qianli01 ,
                           database= pyhon3 ,
                           charset= utf8 )

    # 3.0 获取游标
    cursor = conn.cursor()

    # 4.0 执行sql语句
    # 准确sql语句
    sql = "select * from students;"
    cursor.execute(sql)
    # 获取查询结果
    # fetchone一次拿一个值,
    first = cursor.fetchone()
    print( 第一个值 )
    print(first)

    second = cursor.fetchone()
    print( 第二个值 )
    print(second)

    print( 全部 )
    all = cursor.fetchall()
    print(all)

    # 5.0 关闭游标
    cursor.close()

    # 6.0 关闭连接
    conn.close()




python学习笔记-数据库09_pyMySQL

备注:获取查询结果fetchone()fetchall()方法都是将结果聚焦数据取出,每取一个,结果集的数据就少一个

防止SQL注入

SQL注入:用户提交带有恶意的数据与SQL语句进行字符串方式的拼接,从而影响了SQL语句的语义,最终产生数据泄露的现象
如何防止SQL注入?
SQL语句参数化

  • SQL语言中的参数使用%s来占位,此处不是python中的字符串格式化操作

  • 将SQL语句中%s占位所需要的参数存在一个列表中,把参数列表传递给execute方法中第二个参数

// 被sql注入的语句,导致查询的结果是表的全部内容
sql ="select * from students where name =  %s " % "黄蓉  or 1 = 1 or  "
// 打印sql结果:select * from students where name =  黄蓉  or 1 = 1 or   

# 正确写法:
# 使用防止sql注入的sql语句,%s是sql语句的参数和字符串里面的%s不一样,不要加上引号
sql = "select * from students where name = %s"
cursor.execute(sql,("三",))

防止sql注入多个参数的使用

import pymysql

if __name__ ==  __main__ :
    conn = pymysql.connect(host= localhost ,
                           port=3306,
                           user= root ,
                           password= qianli01 ,
                           database= pyhon3 ,
                           charset= utf8 )

    cursor = conn.cursor()

    sql = "insert into students(name,age) values(%s,%s)"

    # 插入数据,多个参数
    try:
        # 执行sql语句的传入参数,参数类型可以是元组,列表,字典
        cursor.execute(sql,["力",20])
        # 提交数据
        conn.commit()
    except Exception as e:
        # 撤销操作
        conn.rollback()
    finally:
        cursor.close()
        conn.close()

  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部