Python封装mysql数据库
写一个MySQL的操作类,避免每次重复编写代码,开箱即用,如果老铁觉得有用,可以点个关注哦
import pymysql
# 建立一个简单的数据库操作类
class SimpleMySqlClass:# 函数要对数据库进行连接,并建立一个游标为操作数据库做准备def __init__(self, host, db_name, user, password):self.host = hostself.db_name = db_nameself.user = userself.password = password# self.port = port# 调用函数create_connection()对数据库进行连接self.connection = self.create_connection()# 调用函数create_cursor()生成一个游标,为操作数据库做好准备self.cursor = self.create_curour()# 建立一个数据库连接def create_connection(self):# pymysql在1.0以后的版本需要这样写self.connection = pymysql.connect(host=self.host, database=self.db_name,user=self.user, password=self.password)return self.connection# 建立一个游标def create_curour(self):# 通过数据库连接建立一个操作游标self.cursor =self.connection.cursor()return self.cursor# 执行查询def query_sql(self,sql):try:# 执行查询语句self.cursor.execute(sql)# 利用游标的fetchall()函数取得查询到的所有记录data = self.cursor.fetchall()# 返回记录return dataexcept Exception:# 发生错误时返回有错误的SQL语句raise Exception('执行的SQL语句: '+sql+',出现异常,请检查')# 执行增、删、改相关SQL语句def execute(self,sql):try:# 执行增、删、改SQL语句时,返回的值是操作结果影响的记录数re = self.cursor.execute(sql)# 提交执行事务self.connection.commit()return reexcept Exception:# 发生错误回滚事务self.connection.rollback()# 返回-1提示执行出错return -1# # 列出数据库中的表def list_tables(self):sql_1 = "show tables"try:self.cursor.execute(sql_1)table_list = self.cursor.fetchall()return table_listexcept Exception:raise Exception('执行的SQL语句:'+ sql_1 +',出现异常,请检查!')# 关闭连接,执行完相关的数据库操作,及时关闭连接是良好的编程习惯def close(self):self.connection.close()# 主函数main对类进行测试
if __name__ == "__main__":# 对类实例化host = '192.168.1.32'mysql_obj = SimpleMySqlClass(host, 'test_db', 'root', '123')# 有一个数据库名字是test_db,该数据库下有一张表user_info# 调用类中的函数query_sql执行查询语句re = mysql_obj.query_sql('select * from user_info')# print(re) # 打印结果:(('xiaoxiao', 1), ('xiaoA', 2), ('xiaoB', 3), ('xiaoC', 4), ('xiaoD', 5))"""row的打印结果:('anle', 1)('xiaoA', 2)('xiaoB', 3)('xiaoC', 4)('xiaoD', 5)"""for row in re:print("序号:",row[1],"姓名:",row[0])# 执行增删改的SQL语句add_count = mysql_obj.execute('insert into user_info values("xiaoE",6)')if add_count:print('添加成功')else:print("添加失败")del_count = mysql_obj.execute('delete from user_info where name = "xiaoE"')if del_count:print("删除成功")else:print("删除失败")# 列举数据库中的表:table_names = mysql_obj.list_tables() # 打印table_names是一个元组,(('user',), ('user_info',))# print(table_names)for table in table_names:print(table[0])# 关闭数据库连接,节省计算机资源mysql_obj.close()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
