一、peewee数据库模块映射
1.概述
我们用pymysql进行数据库操作是可行的,但是也存在很多的问题,假如开发人员不懂mysql,有时候我们随着业务需求的变换,而转换另一种数据库,进行操作,我们当前的pymysql对数据库数据的插入、删除和修改不方便。
在这种情况下,我们提出orm(Object Relational Mapping数据库映射)概念,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上来说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
2.peewee支持三种数据库
Class Meta
二、脚本连接运行数据库
1.代码
# coding:utf-8 import peewee # 1.连接数据库,传入必要参数数据库地址,用户名,密码,数据库名 db = peewee.MySQLDatabase( host="47.93.185.38", user="root", password="123456", database="study_test" ) # 2.定义一个类继承peewee.Model创建表,一个类就是一个表 # (1)peewee创建数据库的时候,会默认添加主键id # (2)peewee创建数据库字段默认不可为空 class School(peewee.Model): # 定义两个字段,学校名称和地址 name = peewee.CharField(max_length=20,default="北电学院") address = peewee.CharField(max_length=30) # 将表和数据库连接 class Meta: database = db if __name__ == '__main__': # 3.创建表,多个表用列表 School.create_table()
2.显示结果
三、操作数据库
1.新增操作
(1)代码(上面连接以及定义类部分不变)
if __name__ == '__main__': # 3.创建表,多个表用列表 School.create_table() # 插入数据(第一种方法) s = School.create(name="江苏大学", address="江苏") s.save() # 插入数据(第二种方法) School.insert(name="苏州大学", address="苏州").execute()
(2)结果显示
2.更新操作
(1)代码
if __name__ == '__main__': # 3.创建表,多个表用列表 # School.create_table() # 更新数据 School.update(address="江苏").where(id==2).execute()
(2)结果显示
3.删除操作
(1)代码
if __name__ == '__main__': # 3.创建表,多个表用列表 # School.create_table() # 删除数据(第一种方法) s = School.get(name="江苏大学") s.delete_instance() # 删除数据(第二种方法) School.delete_by_id(6) School.delete().where(School.id==7).execute()
(2)结果显示(相关数据被删除)
4.查询操作
(1)代码
if __name__ == '__main__': # 3.创建表,多个表用列表 # School.create_table() # 查询语句 # (1)查询所有 s = School.select() # s返回的是一个对象,需要对象.属性名获取属性值 print("这是查询所有的") for i in s: print(i.name, i.address) print("------------------") # (2)有条件查询 s = School.get(School.id==5) print("查询id为5的数据") print(s.name, s.address) print("------------------") s = School.select().where(School.name=="苏州大学") print("这是查询学校名称为苏州大学的数据") for i in s: print(i.name, i.address) print("------------------") # (3)正序、倒叙查询 s = School.select().order_by(School.id.asc()) # 升序,默认为升序 s_ = School.select().order_by(School.id.desc()) # 降序 print("id降序查询") for i in s_: print(i.id, i.name, i.address)
(2)结果显示