python封装MySQL数据库操作

概述

直接使用python api操作数据库,已经很方便实用了,但有时我们根据需求,还是再次封装,让操作更加简单

# coding=utf-8

import mysql.connector

class MySQLUtil:
    def __init__(self):
        self._conn=None
        self._rowcount=0

    def connect(self,user,password,host,port,database,buffered=True):
        self._conn=mysql.connector.connect(user=user,
                                    password=password,
                                    host=host,
                                    port=port,
                                    database=database,
                                    buffered=buffered
                                    )


    def queryall(self,sql,paras=None):
        '''
        执行select语句,返回所有结果,list类型
        '''
        try:
            cursor=self._conn.cursor()
            cursor.execute(sql,paras)
            datas=cursor.fetchall()
            self._rowcount=cursor.rowcount
            return datas
        finally:
            cursor.close()

    def queryone(self,sql,paras=None):
        '''
        执行select语句,返回一条记录,tuple类型
        '''
        try:
            cursor=self._conn.cursor()
            cursor.execute(sql,paras)
            data=cursor.fetchone()
            self._rowcount=cursor.rowcount
            return data
        finally:
            cursor.close()

    def update(self,sql,paras):
        '''
        执行insert、update、delete语句,返回影响的记录数据
        '''
        try:
            cursor=self._conn.cursor()
            cursor.execute(sql,paras)
            self._rowcount=cursor.rowcount
            return self._rowcount
        finally:
            cursor.close()

    @property
    def rowcount(self):
        '''
        如果是执行queryall()、queryone(),就返回查询结果的行数
        如果是执行update(),返回影响的记录数据
        '''
        return self._rowcount

    def commit(self):
        self._conn.commit()

    def rollback(self):
        self._conn.rollback()

    def close(self):
        self._conn.close()

if __name__ == "__main__":
    try:
        db=MySQLUtil()
        db.connect('root','','127.0.0.1','3308','test',True)
        datas=db.queryone("select * from user where password=%s",['123456'])
        print(datas)
        print(db.rowcount)
        # num=db.update("update user set password=%s where id=%s",['1','3920e47cf7224e0eb9a1d75f9ded3f4e'])
        # print(num)
        # print(db.rowcount)
        # db.commit()
    finally:
        db.close()

原文出处:/show_1EF3VdI9xjfG.html