本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。