通过上一篇的简单封装数据库方法,大家也对封装有所了解,其实封装数据库有很多种方法,但在这里,简单再封装一个对sql语句的详细封装方法 操作前提: 打开cmd,连接mysql,查看自己有没有数据库: 先创建一个DB类,并写好初始化方法及连接数据库操作 传入要做操作的表名字,即使不存在也可以,后续会创建相对应的表 之后就是连接数据库的必传参了 user = 数据库的账户名 需要注意的是,在写create table 时,后面要跟上空格,要不sql语句会粘到一起 id int primary key auto_increment 设置id为主键,且自增 这里也是一样,在写完delete from 时,后面要跟上空格 且在做了操作以后,要记得commit()提交到数据库 这种封装还算比较实用,因为我只需要传入一个有键、值的字典就行,比如我现在一个只有name的字段的表,那么传入的datas就可以这样: 当然,多了也是可以,举个例子,后面会写上调用 也是一样,记得在写好select * from 后面要加上空格 这里返回的是所有符合查询条件的数据 其中封装方法中的name就是数据库表中的字段名,value就是我们要查找的对应值 utf8mb4和utf8的区别我就不详细说了,大家可以看看这篇博客:https://blog.csdn.net/grl18840839630/article/details/105597074 总的而言,较比上一篇博客的数据库封装,这种的相对简单一些,但是比较笨拙,比如多表联查。 做一般的增、删、改、查还算是比较友好,看大家喜欢了
这些已经准备好后,查看是否存在数据库
show databases;
没有就创建一个名为start的数据库:
create database start;
打开pycharm编译器,开始封装数据库
class DB(): def __init__(self,table_name,user,host,database,password,charset): #charset是一个设置字符格式 import pymysql self.connect = pymysql.connect(user = user,host = host,database = database,password = password,charset = charset) self.table_name = table_name
host = ip地址,本机就传localhost就可以
database = 你要连接的数据库名
password = 你的数据库密码
charset = 设置数据库的字符集创建表方法
def get_table(self): #创建表 # 这里用的是拼接,通过你传入的表名字来创建相应的表,当然,这里的表结构你也可以改变 sql = 'create table ' + self.table_name + "(id int primary key auto_increment,name varchar(20),age" " int,address varchar(30)) " try: # 使用with语句可以免去关闭游标和数据库的操作 with self.connect.cursor() as cursor: cursor.execute(sql) except: # 如果报错,游标回滚 self.connect.rollback()
封装清空表数据方法
def clear_data(self): #清空表内全部数据,恢复初始状态,如果你是copy的代码在工作中的话,慎用此方法 sql = 'delete from ' + self.table_name #需要注意的是,在delete from后面要有空格隔开 with self.connect.cursor() as cursor: # 取消绑定主键 cursor.execute('set foreign_key_checks =0;') cursor.execute(sql) # 对数据库进行删除、修改、插入语句记得commit到数据库 self.connect.commit()
插入数据方法
def insert_into(self,datas): # datas 需要插入到数据库中的数据,传入格式为字典,如{"name":"白嘉诚","age":"20"} # 做循环处理,将每一个循环到的值转换为字符串形式 for i in datas: datas[i] = "'" + str(datas[i]) + "'" # 打印结果: '白嘉诚' '20' print(datas[i]) key = ','.join(datas.keys()) # 做变量存储及逗号拼接,key保留传入字典形式的键 values = ','.join(datas.values()) # 做变量存储及逗号拼接,values保留传入字典形式的值 # 需要注意的是,insert into后面要有空格隔开 sql = "insert into " + self.table_name + "(" + key + ") values (" + values + ")" # 这里就是关键了,通过上面的方法进行处理后,我们只需要传入有键(字段)和值(相对应的字段值)就可以插入语句 try: with self.connect.cursor() as cursor: cursor.execute(sql) self.connect.commit() except Exception as e: print("insert into error",e) self.connect.rollback()
{“name”:“某某某”}查询语句封装
def select_data(self,name,value): # name为字段名,value为你要查询的值 sql = 'select * from ' + self.table_name + " where " + name + "=" + "'" + value + "'" try: with self.connect.cursor() as cursor: cursor.execute(sql) return cursor.fetchall() except Exception as e: print("表内没有这样的数据")
调用封装,简单实例
#实例化DB类 a = DB('student',user = 'root',database = 'user',password = '12345678',host = 'localhost',charset = 'utf8mb4') a.get_table() #调用创建表方法 a.clear_data() #清除表内数据 a.insert_into(datas = {"name":"佰嘉城","age":"20","address":"吉林"}) # 插入一条数据 print(a.select_data("name","佰嘉城")) # 查询符合条件的数据
全部代码演示
class DB(): def __init__(self,table_name,user,host,database,password,charset): #charset是一个设置字符格式 import pymysql self.connect = pymysql.connect(user = user,host = host,database = database,password = password,charset = charset) self.table_name = table_name def get_table(self): #创建表 # 这里用的是拼接,通过你传入的表名字来创建相应的表,当然,这里的表结构你也可以改变 sql = 'create table ' + self.table_name + "(id int primary key auto_increment,name varchar(20),age" " int,address varchar(30)) " try: # 使用with语句可以免去关闭游标和数据库的操作 with self.connect.cursor() as cursor: cursor.execute(sql) except: # 如果报错,游标回滚 self.connect.rollback() def clear_data(self): #清空表内全部数据,恢复初始状态,如果你是copy的代码在工作中的话,慎用此方法 sql = 'delete from ' + self.table_name #需要注意的是,在delete from后面要有空格隔开 with self.connect.cursor() as cursor: # 取消绑定主键 cursor.execute('set foreign_key_checks =0;') cursor.execute(sql) # 对数据库进行删除、修改、插入语句记得commit到数据库 self.connect.commit() def insert_into(self,datas): # datas 需要插入到数据库中的数据,传入格式为字典,如{"name":"白嘉诚","age":"20"} # 做循环处理,将每一个循环到的值转换为字符串形式 for i in datas: datas[i] = "'" + str(datas[i]) + "'" # 打印结果: '白嘉诚' '20' print(datas[i]) key = ','.join(datas.keys()) # 做变量存储及逗号拼接,key保留传入字典形式的键 values = ','.join(datas.values()) # 做变量存储及逗号拼接,values保留传入字典形式的值 # 需要注意的是,insert into后面要有空格隔开 sql = "insert into " + self.table_name + "(" + key + ") values (" + values + ")" # 这里就是关键了,通过上面的方法进行处理后,我们只需要传入有键(字段)和值(相对应的字段值)就可以插入语句 try: with self.connect.cursor() as cursor: cursor.execute(sql) self.connect.commit() except Exception as e: print("insert into error",e) self.connect.rollback() def select_data(self,name,value): # name为字段名,value为你要查询的值 sql = 'select * from ' + self.table_name + " where " + name + "=" + "'" + value + "'" try: with self.connect.cursor() as cursor: cursor.execute(sql) return cursor.fetchall() except Exception as e: print("表内没有这样的数据") if __name__ == '__main__': a = DB('student',user = 'root',database = 'user',password = '12345678',host = 'localhost',charset = 'utf8mb4') a.get_table() a.clear_data() a.insert_into(datas = {"name":"佰嘉城","age":"20","address":"吉林"}) print(a.select_data("name","佰嘉城"))
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算