Python定义一个类操控MySQL数据库

为什么要定义一个类:这里是从网上查到的:

之前的编程都是基于过程,最多就是把过程提取出来,形成函数,但一旦有大量的相似重复的数据时,不以数据为中心反而不好管理,比如需要用到很多学生、老师、工人,之前最好的方式就是定义class,但这样既不方便又不安全,而且不能处理学生、老师、工人的一些动作,只要涉及动作,就要定义函数。

于是把数据抽象化,提取出一些特征,就有了成员变量。此外,还可以对抽象的“类”定义动作,专属于它的动作,就有了成员函数。把成员函数和成员变量“包装”到一起,就形成了类。

成员函数和成员变量,都有着这三种属性。
私有,体现在封装上,有些成员只允许类自己访问,外界只能通过(唯一)定义的公共成员函数去访问,这样这些私有的成员如果不对劲了,问题肯定出在(唯一)定义的公共成员函数,一安全,二也好定位问题。
保护,体现在继承上,会有这样的需求:父类的某些成员允许子类访问,但不许外界访问,介于二者之间,产生了保护属性。
公共,不言而喻,定义一个类,目的还不是为了让人用......
类是抽象的,对象是具体的。比如学生是一个类,抽象,泛指一种人,有很多特征和动作,比如姓名、学校,吃饭、上课。学生-小明,就是个具体的对象。

 类就是一个模子,别人也可以使用,可以导入不同的参数和数据,实现不同具体环境下的任务功能

import pymysql
class Mydb:
    #定义一个类
    #参数传递的时候可以直接用字典 使用的时候传入  **类名.参数变量
    config={
        "host":"localhost",
        "user":"root",
        "password":"root",
        "db":"music_project",
        "charset":"utf8"
    }
    #定义内部的参数
    def __init__(self):
        self.connection = pymysql.connect(**Mydb.config)
        self.cursor= self.connection.cursor()
    #定义一个关闭的函数
    def close(self):
        if self.cursor:
            self.cursor.close()
        if self.connection:
            self.connection.close()

    #插入 修改  删除调用 *参数,可变参数
    def exeDML(self,sql,*args):
        try:
            #执行sql
            count = self.cursor.execute(sql,args)
            id = self.connection.insert_id()
            #提交事务
            self.connection.commit()
            return id
        except Exception as e:
            print(e)
            if self.connection:
                self.connection.rollback()
        finally:
            self.close()

    def query_one(self,sql,*args):
        try:
            #执行sql
            self.cursor.execute(sql,args)
            #获取结果集
            return self.cursor.fetchone()
        except Exception as e:
            print(e)
        finally:
            self.close()

    def query_all(self,sql,*args):
        try:
            #执行sql
            self.cursor.execute(sql,args)
            #获取结果集
            return self.cursor.fetchall()
        except Exception as e:
            print(e)
        finally:
            self.close()
        
if __name__ == "__main__":
    dbutil = Mydb()
    #sql = "insert into emp (empno,ename,sal) values(%s,%s,%s)"
    #count = dbutil.exeDML(sql,9999,'lili',12000)
    #print(count)

    #sql = "select * from emp where empno=%s"
    #emp = dbutil.query_one(sql,7788)
    #print(emp)

    sql = "select * from emp"
    emps = dbutil.query_all(sql)
    for e in emps:
        print(e,end="\n")
import pymysql
connection = None
cursor = None
try:
    connection = pymysql.connect(host='localhost',port=3306,user='root',password='Ww#09182415',db='test04',charset='utf8')
    #print(conncetion)
    #获取cursor对象
    cursor=connection.cursor()
    #编写SQL语句 在这里编写SQL语句,之后传进去
    #传值得时候,只用占位符,重新写值得参数,传入一个args元组,也就是说,要把数据转化成元组之后再传到数据库里面
    #sql = 'select * from emp'
    sql = 'insert into emp(empno,ename) values(%s,%s)'
    args = (1234,'mary')
    #执行SQL语句
    count = cursor.execute(sql,args)
    #查看结果数据集
    # emps = cursor.fetchall()
    # #print(emps,type(emps))
    # for e in emps:
    #     print(e,'\n')
    #打印影响了多少条语句
    print('count',count)
    #提交事务,就可以更改数据库了
    connection.commit()
except Exception as e:
    print(e)
    #如果有异常,事务回滚
    connection.rollback()
finally:
    if cursor :
        cursor.close()
    if connection:
        connection.close()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值