python,peewee简单使用

peewee是一个轻量级的ORM框架,适用于小型项目

要使用首先的现在安装peewee模块:

C:\Users\asus>pip3 install peewee
Collecting peewee
Downloadinghttps://files.pythonhosted.org/packages/33/07/d4c742d88998fb448e18be41dc25e748376b7f69359d37fedaee09e66617/peewee-3.5.2.tar.gz 1.9MB)100% |████████████████████████████████| 1.9MB 13kB/s
Installing collected packages: peewee

  Running setup.py install for peewee ... done  Successfully installed peewee-3.5.2

安装完成之后,要使用peewee操作数据库得先import

连接数据库并创建table

from peewee import MySQLDatabase, Model, CharField, DateField, BooleanField, IntegerField

#py_peewee连接的数据库名
db = MySQLDatabase('py_peewee', host='192.168.1.103', user='root', passwd='mysql', charset='utf8', port=3306)

class BaseModel(Model):
    class Meta:
        database = db #将实体与数据库进行绑定
        
class Person(BaseModel): #继承自BaseModel,直接关联db,并且也继承了Model。Model有提供增删查改的函数
    name = CharField(verbose_name='姓名', max_length=10, null=False, index=True)
    passwd = CharField(verbose_name='密码', max_length=20, null=False, default='111111')
    gender = IntegerField(verbose_name='姓别', null=False, default=1)
    is_admin = BooleanField(verbose_name='是否是管理员', default=False)

#查询数据库是连接   
print(db.is_closed()) #返回false未连接
#连接数据库
db.connect()
print(db.is_closed()) #返回true表示已连接
#创建table
Person.create_table()

CharFiled,IntegerField,BooleanField......都是数据库中得数据类型,可以通过查看源码看到相应得解释:

class CharField(_StringField):
    field_type = 'VARCHAR'

    def __init__(self, max_length=255, *args, **kwargs):
        self.max_length = max_length
        super(CharField, self).__init__(*args, **kwargs)

    def get_modifiers(self):
        return self.max_length and [self.max_length] or None

上面的代码来源于peewee模块。

1.新增数据

from com.dtjy.peewee.learn_peewee import *

#创建一条数据
p = Person.create(name='ab',email='123@321')

create()函数传入的参数数量可变的,使用dictionary类型接受,键就是数据库中column

2.修改数据

from com.dtjy.peewee.learn_peewee import *
p = Person.get(name='ab',email='123@321')

p.passwd = '999999'
#将修改后的数据进行存库
p.save()

修改某条数据的先获取到该数据,使用get()函数,然后赋值给引用变量进行修改,save()函数保存,这种方式只能修改一条数据,且是第一条满足条件的数据,后面满足条件的数据都不会被修改,应为通过print(type(p))输出<Model: Person>可知查询返回的是一个Person对象

3.查找数据

单个查找:和修改数据中的方法相同:p=Person.select().where(Person.name=='ab').get(),另一种写法

多个查询结果:

ps = Person.select() 通过只使用select函数可获取所有数据,且返回的是个<class 'peewee.ModelSelect'>

通过使用tuple函数可操作该结果,元素是Person对象:

ps = Person.select()
print(type(ps))
print(ps[1])
print(type(ps[1]))
for i in ps:
    print(i.name)
from com.dtjy.peewee.learn_peewee import 
ps=Person.select().where(Person.name=='ab').order_by(Person.id)
print(type(ps))
for p in ps:
    print(p.name)

也可以使用filter()函数:

ps = Person.filter(name='ab')
for p in ps:
    print(p.name)

以上的查询方式适用于比较简单条件的sql查询,如果查询语句十分复杂,且是多表关联就不是很灵活了


4.删除数据

删除一条:

p = Person.get(name='ab')
p.delete_instance()

删除多条:

Person.delete().where(Person.name=='ab').execute()


猜你喜欢

转载自blog.csdn.net/beitacat/article/details/81043518