Python——pymysql、事务、索引学习笔记

Python——pymysql学习笔记

  • pymysql 基本使用
    • 查询
    • 增删改
    • 防止sql注入
  • 事务
  • 索引

pymysql 基本使用

查询

# 1. 导包
import pymysql

if __name__ == '__main__':
    # 2. 创建连接对象
    # connect=Connection=Connect
    # 1)host:服务器的主机地址
    # 2)port:mysql数据库端口号
    # 3)user:用户名
    # 4)password:密码
    # 5)database:操作的数据库
    # 6)charset:操作数据库使用的编码格式
    conn = pymysql.connect(host='localhost',
                           port=3306,
                           user='root',
                           password='root',
                           database='python',
                           charset='utf8')

    # 3. 获取游标,目的就是要执行sql语句
    cursor = conn.cursor()
    # 准备sql
    sql = "select * from students;"

    # 4. 执行sql语句
    cursor.execute(sql)

    # 获取查询结果
    # fetchone() 返回一条数据   fetchall() 返回全部数据
    row = cursor.fetchall()
    for row in row:
        print(row)

    # 关闭游标
    cursor.close()

    # 关闭连接
    conn.close()

增删改

# 1. 导包
import pymysql

if __name__ == '__main__':
    # 2. 创建连接对象
    # connect=Connection=Connect
    # 1)host:服务器的主机地址
    # 2)port:mysql数据库端口号
    # 3)user:用户名
    # 4)password:密码
    # 5)database:操作的数据库
    # 6)charset:操作数据库使用的编码格式
    conn = pymysql.connect(host='192.168.137.138',
                           port=3306,
                           user='root',
                           password='Allen1226.com',
                           database='python',
                           charset='utf8')

    # 3. 获取游标,目的就是要执行sql语句
    cursor = conn.cursor()
    # 准备sql
    # 插入数据 sql = "insert into students(name,age,sex) values('Jane', 20, 'Female')"
    # 更新数据 sql = "update students set sex='Man' where id=3;"
    # 删除数据
    sql = "delete from students where id=11;"

    try:
        # 4. 执行sql语句
        cursor.execute(sql)
        # 提交修改的数据到数据库
        conn.commit()
    except Exception as e:
        # 对修改的数据进行撤销,表示数据回滚
        conn.rollback()
    finally:
        # 关闭游标
        cursor.close()

        # 关闭连接
        conn.close()

防止sql注入

# 1. 导包
import pymysql

if __name__ == '__main__':
    # 2. 创建连接对象
    # connect=Connection=Connect
    # 1)host:服务器的主机地址
    # 2)port:mysql数据库端口号
    # 3)user:用户名
    # 4)password:密码
    # 5)database:操作的数据库
    # 6)charset:操作数据库使用的编码格式
    conn = pymysql.connect(host='192.168.137.138',
                           port=3306,
                           user='root',
                           password='Allen1226.com',
                           database='python',
                           charset='utf8')

    # 3. 获取游标,目的就是要执行sql语句
    cursor = conn.cursor()
    # 准备sql,使用防止sql注入的sql语句,%s 不需要加引号
    sql = "select * from students where name=%s;"

    # 4. 执行sql语句
    cursor.execute(sql, ("Tom",))

    # 获取查询结果
    # fetchone() 返回一条数据   fetchall() 返回全部数据
    row = cursor.fetchall()
    for row in row:
        print(row)

    # 关闭游标
    cursor.close()

    # 关闭连接
    conn.close()



### 防止sql注入多个参数使用 ###
# 1. 导包
import pymysql

if __name__ == '__main__':
    # 2. 创建连接对象
    # connect=Connection=Connect
    # 1)host:服务器的主机地址
    # 2)port:mysql数据库端口号
    # 3)user:用户名
    # 4)password:密码
    # 5)database:操作的数据库
    # 6)charset:操作数据库使用的编码格式
    conn = pymysql.connect(host='192.168.137.138',
                           port=3306,
                           user='root',
                           password='Allen1226.com',
                           database='python',
                           charset='utf8')

    # 3. 获取游标,目的就是要执行sql语句
    cursor = conn.cursor()
    # 准备sql,使用防止sql注入的sql语句,%s 不需要加引号
    sql = "insert into students(name,age,sex) value(%s,%s,%s);"

    try:
        # 4. 执行sql语句
        # 参数可以是元组,列表,字典
        cursor.execute(sql, ["Star", 10, "Man"])
        conn.commit()
    except Exception as e:
        conn.rollback()
    finally:
        # 关闭游标
        cursor.close()

        # 关闭连接
        conn.close()

事务

show engines; 查看数据库存储引擎
begin 开启事务 (默认自动提交)
set autocommit=0; 手动提交数据
commit 提交事务
rollback 回滚

Python——pymysql、事务、索引学习笔记_第1张图片
Python——pymysql、事务、索引学习笔记_第2张图片

索引

索引:提高查询速度
主键,约束条件外键,自动添加索引

show index table 表名; 查看表已有索引
show profiles 查看执行时间
alert table 表名 add index(字段名1) 给字段添加索引
alert table 表名 add index(字段名1,字段名2) 给多字段添加联合索引,遵从最左原则(查询语句必须包含字段名1)
alert table 表名 drop index 索引名 删除索引

你可能感兴趣的:(学习笔记,数据库,mysql,sql)