python封装调用mysql数据库

使用pymysql包操作mysql数据库封装类

import pymysql
import os,sys
import configparser

class OperateSQL(object):
    def __init__(self,configpath):
        config = configparser.ConfigParser()
        config.read(configpath)
        #连接数据库
        self.conn = pymysql.connect(host=config['address']['host'],
                user=config['address']['user'],
                passwd=config['address']['password'],
                port=int(config['address']['port']),
                db=config['address']['db'],
                charset=config['address']['charset']
                )
        #创建游标对象
        self.cursor = self.conn.cursor()
    
    def create_db(self,name,charset='utf8',collate='utf8_general_ci'):
        '''
        功能:创建一个数据库
        参数:name表示要创建数据表的名称;
        '''
        all_databases = self.show_databases()
        if name.lower() in all_databases:
            print("数据库{}已经被创建!".format(name))
            return
        try:
            self.cursor.execute('create database if not exists ' + name + ' default charset ' + charset + ' collate ' + collate)
            print('创建数据库"{}"成功!'.format(name))
            return 0
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def show_databases(self):
        '''
        功能:查看已创建的数据库
        '''
        try:
            self.cursor.execute('show databases')
            result = []
            while True:
                res = self.cursor.fetchone() 
                if res is None:
                    return result
                result.append(res[0])
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def select_database(self,database):
        '''
        功能:选择连接或者修改连接的数据库
        参数:database表示要连接的数据库名称
        '''
        try:
            self.conn.select_db(database)
            return 0
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def delete_database(self,databaseName):
        '''
        功能:删除指定的数据库
        参数:databaseName表示要删除的数据库名称
        '''
        if databaseName not in self.show_databases():
            print('要删除的数据库"{}"不存在!'.format(databaseName))
            return 
        try:
            self.cursor.execute('drop database ' + databaseName)
            print('删除数据库"{}"成功!'.format(databaseName))
            return 0
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def check_current_database(self):
        '''
        功能:查看当前使用的数据库
        '''
        try:
            self.cursor.execute('select database()')
            return self.cursor.fetchone()[0] #返回当前使用数据库的名称
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def create_table(self,tableName,command):
        '''
        功能:创建数据表
        参数:name表示要创建数据表的名称;command表示创建数据表时,定义各字段的详细参数等。
        '''
        all_tables = self.show_tables() #生成器赋值给all_tables变量
        for name in all_tables:
            if tableName.lower() == name: #遍历当前数据库中的数据表生成器,判断是否存在相同名称的数据表
                print('数据表{}已经被创建!'.format(tableName))
                return
        try:
            self.cursor.execute('create table ' + tableName + command)
            print('创建数据表"{}"成功!'.format(tableName))
            return 0
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def delete_table(self,tableName):
        '''
        功能:删除指定数据表
        参数:tableName表示要删除的数据表名称
        '''
        all_tables = self.show_tables() #生成器赋值给all_tables变量
        for name in all_tables:
            if tableName == name: #遍历当前数据库中的数据表生成器,判断是否存在相同名称的数据表
                try:
                    self.cursor.execute('drop table ' + tableName)
                    print('删除数据表"{}"成功!'.format(tableName))
                    return 0
                except pymysql.Error as e:
                    print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
        print('要删除的数据表"{}"不存在,请确认并重新删除!'.format(tableName))
    
    def show_tables(self):
        '''
        功能:查看当前数据库中有哪些已创建的数据表,以生成器的方式返回
        '''
        try:
            if self.check_current_database() == None:
                print("请先选择数据库!")
                return
            self.cursor.execute('show tables')
            res = self.cursor.fetchone()
            while res:
                yield res[0] #当res值不为None时,以生成器的方式返回(防止数据库中数据表太多)
                res = self.cursor.fetchone()
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def insert_delete_updata_data(self,command):
        '''
        功能:向数据表中增加或删除或更新数据
        参数:command表示要执行的修改数据的命令
        '''
        try:
            if self.check_current_database() == None:
                print("请先选择数据库!")
                return
            self.cursor.execute(command)
            return 0
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def get_data_from_table(self,command):
        '''
        功能:从数据表中获取数据,以生成器的形式返回
        参数:command表示要执行获取数据的命令;
        '''
        if self.check_current_database() == None:
            print("请先选择数据库!")
            return
        try:
            self.cursor.execute(command)
            res = self.cursor.fetchall()
            for element in res:
                yield element  #防止数据表中有大量的数据,以生成器的方式返回每一项数据
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def commit_database(self):
        '''
        功能:确认并提交数据
        '''
        try:
            self.conn.commit()
            return 0 
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def rollback_database(self):
        '''
        功能:对数据库执行回滚操作
        '''
        try:
            self.conn.rollback()
            return 0 
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))
    
    def close_database(self):
        '''
        功能:关闭并退出数据库
        '''
        try:
            self.cursor.close()
            self.conn.close()
            return 0
        except pymysql.Error as e:
            print('Mysql Error %d: %s' %(e.args[0],e.args[1]))

转载于:https://my.oschina.net/u/4006483/blog/3077574

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值