Python基础-peewee操作数据库

一、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)结果显示

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/87340666
今日推荐