,,Python ORM框架Peewee用法详解

,,Python ORM框架Peewee用法详解

本文主要介绍Python ORM框架Peewee用法的详细说明,通过示例代码详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

之前在研究Django的时候,发现它的模型层非常好用。它把对数据库的操作映射成对类和对象的操作,避免了我们在Web项目中直接编写SQL语句。当时我就想,如果这个模型层可以独立使用,那么我们的平台也可以用同样的方式操作数据库。我不喜欢写SQL语句。

后来才知道这个叫ORM(对象关系映射),Python下面有很多这样的类库,比如SQLObject,Storm,peewee,SQLAlchemy。

在这里,我给大家介绍一下Peewee的基本用法,因为它非常轻量级,最重要的是,它和Django的ORM操作非常相似。如果你学过Django,很容易上手。

一、安装peewee

安装非常简单。建议使用pip命令。

pip安装peewee

另外,你也可以通过下载软件包来安装它:https://pypi.python.org/pypi/peewee

二、创建表

来自peewee进口公司*

导入日期时间

db=MySQLDatabase('guest ',主机='127.0.0.1 ',端口=3306,用户='root ',passwd='123456 ')

db.connect()

class BaseModel(模型):

类别元:

数据库=数据库

类用户(基本模型):

username=CharField(unique=True)

类Tweet(BaseModel):

user=ForeignKeyField(User,related_name='tweets ')

message=TextField()

created_date=DateTimeField(默认值=datetime.datetime.now)

is_published=BooleanField(默认值=True)

if __name__=='__main__ ':

#创建表格

User.create_table() #创建用户表

Tweet.create_table() #创建Tweet表

里面的知识点不在少数。让我们逐一解释。

首先,导入peewee库下的所有方法,这当然是必须的。

然后,通过MySQLDatabase连接数据库,填写数据连接的几个必要参数。通过connect()方法与MySQL数据库建立链接。

下一步是创建表,创建BaseModel类,并在该类下创建一个子类Meta。Meta是一个内部类,用来定义peewee的模型类的行为特征。将数据库指定为前面定义的数据库。

接下来是表的创建。在SQL语句中创建表时,我们通常需要知道以下信息。表的名称。表格中有哪些字段?这些字段的类型是什么?是允许空的还是自增的?哪个字段是主键?哪个是外键?

我们用ORM编程语言中的概念来映射这些东西。

创建用户和Tweet类作为表名。该类下定义的变量是字段名,如用户名、消息、创建日期等。字段的类型由CharField、DateTimeField和BooleanField表示。ForeignKeyField创建外键。主键呢?你建表的时候不是一直都有主键id吗?不要!Peewee已经默认为我们添加了这个id。

最后,执行create_table()方法来创建两个表。

通过数据库工具,查看生成的两个表。

三、插入数据

要操作表数据,首先必须在表中有数据。我们先来看看如何添加数据。

if __name__=='__main__ ':

# .

user=User.create(用户名='tom ')

Tweet.create (user=user,message='这是一段文字')

这样,一个tom用户将被添加到用户表中,这个用户将在Tweet表中发送一条Tweet。但是这个用户感兴趣,想继续发第二条推文。所以:

if __name__=='__main__ ':

# .

Tweet.create (user _ id=1,message='这是第二段')

哎~!不,我们没有创建user_id字段!但是,如果您查询Tweet表,您会发现这个字段,它用于关联用户表的id。

四、查询数据

接下来,查询数据。

if __name__=='__main__ ':

# .

#查询1

T=Tweet.get(message='这是一段文字')

打印(t .用户标识)

打印(t .创建日期)

打印(t.is_published)

查询结果:

12017-05-19 15:44:32真实

但是get()方法只能查询一条数据并且是唯一的一条数据;不能按查询条件查询多个项目,也不能查询0个项目。

If _ _ name _ _=' _ _ main _ _': #.#查询ts: print (t.message)中t的2ts=tweet.filter (user _ id=1)

运行结果:

这是一段,这是第二段。

另一方面,filter()方法将更加灵活。可以查询多个结果,循环输出结果。

五、Playhouse库

剧场图书馆提供了一些有趣的方法。当我们安装peewee时,我们也会安装它。

这里只介绍两种方法,model_to_dict和dict_to_model。

model_to_dict方法的用法:

从playhouse.shortcuts导入模型_到_字典,字典_到_模型

# ……

if __name__=='__main__ ':

# ……

user=User.create(用户名='jack ')

#将数据对象转化为字典

u=模型到字典(用户)

打印(u)

运行结果:

{'id': 7,'用户名':'杰克' }

dict_to_model方法的用法:

从playhouse.shortcuts导入模型_到_字典,字典_到_模型

# ……

if __name__=='__main__ ':

# ……

#将字典转换成数据对象

user_data={'id': 2,'用户名':'查理' }

user=dict_to_model(用户,用户_数据)

打印(用户.用户名)

运行结果:

傻瓜

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: