python3连接MySQL数据库

发布时间:2019-08-26 07:17:47编辑:auto阅读(2213)

    环境:python 3.6.1 + mysql 5.1

    Python3 支持用 pymysql 模块来链接数据库


    1、pymysql安装
    windows下:pip install pymysql 直接安装

    2、实现思路
    和用C++访问数据库方法基本相同
    A. 通过pymysql模块的方法,与数据库建立连接
    B. 编写SQL语句
    C. 通过连接的返回的数据库对象,调用相应方法执行SQL语句
    D. 读取数据库返回的数据(即缓存区中的数据)
    E. 对相应的返回数据进行操作
    F. 关闭数据库对象,关闭数据库

    3、查询语句执行流程图:


    4、增删改语句执行流程图:


    5、事务:访问和更新数据库的一个程序执行单元
    - 原子性:事务中包括的操作要么做,要么都不做(捆绑不可分割)
    - 一致性:事务必须使数据库从一致性状态变到另一个一致性状态
    - 隔离性:一个事务的执行不能被其他事务干扰
    - 持久性:事务一旦提交,它对数据库的改变就是永久性的

    6、增删改查功能实现代码:
    #导入pymysql模块
    import  pymysql
    
    class MYSQL:
        # 初始化函数,初始化连接列表
        def __init__(self,host,user,pwd,dbname):
            self.host   = host
            self.user   = user
            self.pwd    = pwd
            self.dbname = dbname
    
        # 获取数据库游标对象cursor
        # 游标对象:用于执行查询和获取结果
        def getCursor(self):
    
            # 建立数据库连接
            self.db = pymysql.connect(self.host,self.user,self.pwd,self.dbname)
    
            # 创建游标对象
            cur = self.db.cursor()
    
            # 返回
            return cur
    
        # 查询操作
        def queryOperation(self,sql):
    
            # 建立连接获取游标对象
            cur = self.getCursor()
    
            # 执行SQL语句
            cur.execute(sql)
    
            # 获取数据的行数
            row = cur.rowcount
    
            # 获取查询数据
            # fetch*
            # all 所有数据,one 取结果的一行,many(size),去size行
            dataList = cur.fetchall()
    
            # 关闭游标对象
            cur.close()
    
            # 关闭连接
            self.db.close()
    
            # 返回查询的数据
            return dataList,row
    
        # 删除操作
        def deleteOperation(self,sql):
    
            # 获取游标对象
            cur = self.getCursor()
            try:
                # 执行SQL语句
                cur.execute(sql)
    
                # 正常结束事务
                self.db.commit()
    
            except Exception as e:
                print(e)
    
                # 数据库回滚
                self.db.rollback()
    
            # 关闭游标对象
            cur.close()
    
            # 关闭数据库连接
            self.db.close()
    
        # 数据更新
        def updateOperation(self,sql):
            cur = self.getCursor()
            try:
                cur.execute(sql)
                self.db.commit()
            except Exception as e:
                print(e)
                self.db.rollback()
    
            cur.close()
            self.db.close()
    
        # 添加数据
        def insertOperation(self,sql):
    
            cur = self.getCursor()
            try:
                cur.execute(sql)
                self.db.commit()
            except Exception as e:
                print(e)
                self.db.rollback()
    
            cur.close()
            self.db.close()

    正在持续更新,若有错误,欢迎大家指正。

关键字