您的位置:首页 > 编程语言 > Python开发

数据库操作之python连接mysql的四种方式、pymysql操作数据库、事务

2020-02-29 18:15 323 查看

文章目录

数据库的介绍

介绍: 数据库是存放数据的仓库,按照一定的数据结构来组织、存储和管理数据

分类: 关系型数据库和非关系型数据库

  • 关系型数据库:Mysql、Oracle、SQL Server、SQLite
  • 非关系数据库:Redis、MongoDB、NoSQL
    -常见的数据库结构:数组,椎,栈,hash,链表,队列,树

Python连接Mysql数据库的几种方式

  • MysqlDB 是python2.x连接数据库的工具,曾使用非常广泛
  • 现在由于进入了python3.x时代,基本已经废弃了
  • MysqlClient
      是mysqldb的衍生版本,兼容mysqldb
    • 是django的orm映射工具
  • PyMysql
      是一个纯Python开发的工具,也兼容mysqldb
    • 使用简单,功能强大
  • SQLAlChemy
      是一个即支持纯sql语言,也支持ORM映射的工具

    PyMysql安装

    安装pymysql:
    下载地址:https://github.com/PyMySQL/PyMySQL

    打开cmd:
    输入命令:pip install pymysql
    如果不能安装
    输入:python3 -m pip install PyMySQL

    数据库建立的连接是【tcp】连接,每一个连接都会占用内存空间,如果不关闭连接,连接数太多一会导致内存不足,二是数据库配置有个最大连接数,如果超过最大连接数,会导致别的用户无法连接数据库。所以一定要关闭游标和连接(占用内存,占用连接数)

    Pymysql操作数据库的流程图:


    游标
    类似于指针,指针是指向数据的地址
    在计算机中我们获取数据不是直接获取的,而是通过地址获取的,而指针就是指向地址的探头,通过指针我们才能访问到具体的数据。

    代码实现步骤:
    1.导包
    2.建立数据库连接
    3.获取游标对象
    4.执行操作
    5.关闭游标对象
    6.关闭数据库连接

    数据库的基本操作

    数据库的基本操作包括:增删改查
    对数据库进行操作之前,首先要获取到数据库的连接
    连接数据库:
    调用pymysql.conneect()方法创建数据库连接
    coon =pymysql.connect(host=None,user=None,password="",database=None,port=0,autocommit=False)
    host:数据库服务器地址(可以填id也可以填域名)
    user:登录用户名
    password:密码
    database:要连接的数据库名称
    port:数据库连接端口(默认值:3306)
    autocommit:是否开启自动提交事务(默认值:False)

    数据库查询操作

    常用的查询方法
    fetchone():获取下一个查询结果集,结果集是一个对象
    fetschall():获取全部的返回结果行
    rowcount:获取execute()方法执行后影响的行数
    注意:跟关键字重名要加飘号

    Pymysql操作数据库

    建立连接
    查询

    新增

    修改
    删除

    事务

    并发控制的基本单元解释:

    从客户端发起的接口请求,要完成的通过123456个流程,其中有一个流程出现问题,都会认为这个接口请求失败。只有全部成功,才算真正的成功。

    转账流程图说明

    银行之间的转账金额必须是固定值,不可减少。如果没有事务进行处理,那么一旦出现意外,会导致金钱无故消失,损伤个人和国家利益

    事务的概念

    介绍:事务是对一组工作顺序的操作,这组操作要么全部成功,要么全部失败。
    例子:银行转行案例
    事务有四个特点(ACID)
    原子性:是指事务像原子一样不可分割
    一致性:事务提交前后,数据的状态不会发生改变
    隔离性:是指事务与事务之间不能互相干扰
    持久性:提交数据后,对数据的改变是永久性的
    注意:使用事务的数据库,理论上只能够通过事务来改变数据。

    数据库隔离性解释案例:

    读已提交案例图:

    数据的机制:
    自动提交:

    • 建立连接时通过,autocommit的值进行设置
    • 建立连接之后,通过conn.autocommit(True)进行设置

    手动提交:

    • 指在未开启自动提交事务之前,可以使用手动提交事务
    • conn.commit() 提交事务
    • conn.rollback() 回滚事务
      事务提交代码演示

    事务回滚代码案例演示:

    #导包
    import pymysql
    conn,cursor=None,None
    try:
    #建立连接
    conn = pymysql.connect("localhost","root","root","books")
    #注意,如果没有设置autocommit,那么自动提交事务是关闭状态
    #获取游标
    cursor = conn.cursor()
    #执行语句
    #需求:1.新增一本书,2.新增这本书的人物
    #新增一本书的SQL
    add_hero_sql="insert into t_book(id,title,pub_date) values (5,'红楼梦',1973-01-01)"
    #新增一个人物的sql,构建异常:列数量和值数量不匹配
    add_hero_sql = "insert into t_hero(id, `name`,`gender`,`book_id`) values(1,7,'贾宝玉',1,4);"
    #执行新增书和新增人物的sql语句
    cursor.execute(add_book_sql)
    cursor.execute(add_hero_sql)
    #查看结果
    cursor.execute("select * from t_book")
    print("查看添加书之后的结果:", cursor.fetchall())
    cursor.execute("select * from t_hero")
    print("查看添加英雄人物之后的结果:",cursor.fetchall())
    #如果自动提交事务没有开启,那需要手动提交事务,否则在代码中的操作,不会真正的把数据提交到数据库
    #所以 我们需要手动提事务,提交方法就是conn.commit()
    conn.commit()
    except Exception as e:
    conn.rollback()
    print("已触发回滚操作!")
    finally:
    #关闭游标
    if cursor:
    cursor.close()
    #关闭连接
    if conn:
    conn.close()
    • 点赞
    • 收藏
    • 分享
    • 文章举报
    刘--小鹿 发布了4 篇原创文章 · 获赞 0 · 访问量 156 私信 关注
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: