seo网站排名优化软件,设计做的好看的网站有哪些,扬州建设工程交易网,搭建wordpress博客之前在学Django时#xff0c;发现它的模型层非常好用#xff0c;把对数据库的操作映射成对类、对象的操作#xff0c;避免了我们直接写在Web项目中SQL语句#xff0c;当时想#xff0c;如果这个模型层可以独立出来使用就好了#xff0c;那我们平台操作数据库也可以这么玩… 之前在学Django时发现它的模型层非常好用把对数据库的操作映射成对类、对象的操作避免了我们直接写在Web项目中SQL语句当时想如果这个模型层可以独立出来使用就好了那我们平台操作数据库也可以这么玩了我不喜欢写SQL语句。 后来才知道原来这个叫ORMObject Relational Mapping对象关系映射在Python下面有很多这样的类库如SQLObject、Storm、peewee和SQLAlchemy。 这里就给你们介绍一下Peewee的基本使用因为它非常的轻量级最主要是和Django的ORM 操作很像如果你学过Django那么很容易上手。 这篇博客承接上一篇以操作MySQL为例。前提条件 Python3.x 编程语言MySQL数据库PyMySQL驱动 一、安装peewee 安装非常简单推荐使用pip命令。 pip install peewee 另外你也可以通过下载包安装https://pypi.python.org/pypi/peewee 二、创建表 from peewee import *
import datetimedb MySQLDatabase(guest, host127.0.0.1, port3306, userroot, passwd123456)
db.connect()class BaseModel(Model):class Meta:database dbclass User(BaseModel):username CharField(uniqueTrue)class Tweet(BaseModel):user ForeignKeyField(User, related_nametweets)message TextField()created_date DateTimeField(defaultdatetime.datetime.now)is_published BooleanField(defaultTrue)if __name__ __main__:# 创建表User.create_table() # 创建User表Tweet.create_table() # 创建Tweet表 这里面包含不了少知识点我们来一一解释。 首先导入peewee库下面的所有方法这个当然需要。 然后通过MySQLDatabase连接数据库把数据连接的几个必要参数一一填写。通过connect()方法与MySQL数据库建立链接。 接下来就是表的创建创建BaseModel类在该类下创建子类MetaMeta是一个内部类它用于定义peewee的Model类的行为特性。指定dabatase 为 前面定义的db。 再接下来就是表的创建了我们在SQL语句创建表时一般需要知道以下信息。表的名字表有哪些字段这些字段分别是什么类型是否允许为空或自增哪个字段是主键是哪个是外键 ORM用编程语言里的概念帮我们映射了这些东西。 创建 User 和 Tweet类做为表名。在类下面定义的变量为字段名如username、message、created_date等。通过CharField、DateTimeField、BooleanField表示字段的类型。ForeignKeyField 建立外键。 主键呢 建表时不都要有个主键id嘛不用peewee默认已经为我们加上这个id了。 最后执行create_table()方法创建两张表。 通过数据库工具查看生成的两张表。 三、插入数据 要想操作表数据首先表里得有数据。先来看看如何添加数据。 if __name__ __main__:# ...user User.create(usernametom)Tweet.create(useruser, message这是一段文字) 这样就要User表里添加一个tom的用户这用户发了一条Tweet在Tweet表里。但这个用户兴致来了想继续发第二条Tweet。于是 if __name__ __main__:# ...Tweet.create(user_id1, message这是第二段文字) 咦~不对我们没有创建user_id字段啊但是如果你查询Tweet表就会发现有这个字段用它来关联User表的id。 四、查询数据 接下来查询数据。 if __name__ __main__:# ...# 查询 1t Tweet.get(message这是一段文字)print(t.user_id)print(t.created_date)print(t.is_published) 查询结果 1
2017-05-19 15:44:32
True 不过get()方法只能查询一条且是唯一的一条数据通过查询条件不能查询出多条也不能查询出0条。 if __name__ __main__:# ...# 查询 2ts Tweet.filter(user_id1)for t in ts:print(t.message) 运行结果 这是一段文字
这是第二段文字 而filter()方法就会更加灵活可以查询多条结果并把结果循环输出。 五、Playhouse库 Playhouse库中提供了一些比较有意思的方法。当我们在安装peewee时也会捎带着把它装上。 这里只介绍它里面的model_to_dict和dict_to_model两个方法。 model_to_dict方法用法 from playhouse.shortcuts import model_to_dict, dict_to_model# ……if __name__ __main__:# ……user User.create(usernamejack)# 把数据对象转成字典u model_to_dict(user) print(u) 运行结果 {id: 7, username: jack} dict_to_model方法用法 from playhouse.shortcuts import model_to_dict, dict_to_model# ……if __name__ __main__:# ……# 把字典转成数据对象user_data {id: 2, username: charlie}user dict_to_model(User, user_data)print(user.username) 运行结果 charlie 转载于:https://www.cnblogs.com/fnng/p/6879779.html