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

import pymysql
 import os,sys
 import configparserclass 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]))