python封装调用mysql数据库_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]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值