Flask实战-留言板-使用Faker生成虚拟数据
使用Faker生成虚拟数据
创建虚拟数据是编写Web程序时的常见需求。在简单的场景下,我们可以手动创建一些虚拟数据,但更方便的选择是使用第三方库实现。流行的python虚拟数据生成工具有Mimesis和Faker,后者同时支持python2和python3,而且文档中包含丰富的示例,所以这里选用Faker。首先用pipenv安装(使用—dev选项声明为开发依赖):pipenv install faker --dev

Faker内置了20多类虚拟数据,包括姓名、地址、网络账号、信用卡、时间、职位、公司名称、Python数据等。要生成虚拟数据,首先要实例化Faker类,创建一个fake对象作为虚拟数据生成器:
>>> from faker import Faker
>>> fake = Faker()
这个fake对象可以使用分别对应所有虚拟数据类别的方法来获取虚拟数据,比如name、address、text等,每次调用都会获得不同的随机结果,一些基本的实例如下所示:
>>> from faker import Faker
>>> fake = Faker()
>>> fake.name()
u'Shane Schmidt'
>>> fake.address()
u'5327 Mcintosh Knolls\nScottshire, SC 42652'
>>> fake.text()
u'Before least case never process financial upon instead.'
>>> fake.text()
u'Including wait dog she. Idea husband heart really executive safe option. Step save point quality citizen may.\nAir full name sea. Very matter camera public most.'
默认的虚拟数据语言为英文,如果你想获取其他语言的虚拟数据,可以在实例化Faker类时传入区域字符作为第一个参数(locale)来指定:
fake = Faker(‘zh_CN’)
在Faker中,简体中文和繁体中文对应的区域字符串分别为zn_CN和zh_TW.
下面示例中,用Faker实现了一个生成虚拟留言数据的命令函数fake。
messageBoard/messageBoard/commands.py:
@app.cli.command()
@click.option('--count', default=20, help='Quantity of messages, default is 20.')
def forge(count):
"""Generate fake messages."""
from faker import Faker db.drop_all()
db.create_all() fake = Faker()
click.echo('Working...') for i in range(count):
message = Message(
name = fake.name(),
body = fake.sentence(),
timestamp = fake.date_time_this_year()
)
db.session.add(message) db.session.commit()
click.echo('Created %d fake messages.' % count)
使用for循环操作数据库时,为了提高效率,我们只需要在for循环结束后调用一次db.session.commit()方法提交数据库会话。
在这个命令函数前,我们使用click提供的option装饰器为命令添加数量选项—count,使用default关键字将默认值设为20。
为了方便测试,生成虚拟数据前会删除重建数据库表。我们分别调用fake对象的name()、sentence()、date_time_this_year()方法生成虚拟的姓名、留言和时间戳。现在使用下面的命令生成虚拟数据:
(messageBoard-0K8c_mmc) D:\flask\messageBoard>flask forge
Working...
Created 20 fake messages.
选项—count用来指定生成的留言数量,下面生成了50条虚拟留言:
(messageBoard-0K8c_mmc) D:\flask\messageBoard>flask forge --count=50
Working...
Created 50 fake messages.
再次访问页面,首页会显示一个很长的留言列表,根据创建的随机日期排序,最先发表的排在上面

Flask实战-留言板-使用Faker生成虚拟数据的更多相关文章
- flask实战-个人博客-数据库-生成虚拟数据 --
3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog ...
- Flask实战-留言板-安装虚拟环境、使用包组织代码
Flask实战 留言板 创建项目目录messageboard,从GreyLi的代码中把Pipfile和Pipfile.lock文件拷贝过来,这两个文件中定义了虚拟环境中需要安装的包的信息和位置,进入m ...
- flask实战-留言板-Web程序开发流程
Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个 ...
- Flask实战-留言板-使用Bootstrap-Flask简化页面编写
使用Bootstrap-Flask简化页面编写 扩展Bootstrap-Flask内置了可以快速渲染Bootstrap样式HTML组件的宏,并提供了内置的Bootstap资源,方便快速开发,使用它可以 ...
- Flask实战-留言板-使用Flask-DebugToolbar调试程序、Flask配置的两种组织形式
使用Flask-DebugToolbar调试程序 扩展Flask-DebugToolbar提供了一系列调试功能,可以用来查看请求的SQL语句.配置选项.资源加载情况等信息.这些信息在开发时会非常有用. ...
- 利用ForgeryPy生成虚拟数据
在程序研发过程中,我们往往需要大量的虚拟实验数据.Python中有多个包可以用于生成虚拟数据,其中功能较为完善的是ForgeryPy. 1 安装 采用pip进行安装: pip install Forg ...
- Python Flask之留言板(无数据库)
一个py文件,一个html文件,可以直接运行 py文件 from flask import Flask, request, render_template, redirect, url_for imp ...
- php+redis实战留言板(todolist)与互粉功能
目的:通过留言板(todolist)与互粉功能,掌握php操作redis的方法 相关数据操作命令 1,keys * 查看数据库所有的key 2,type + key: 如 type uid 查 ...
- faker生成器生成虚拟数据的Python模块
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:行哥 今天给大家介绍一个Faker模块,一款基于Python的测试数 ...
随机推荐
- html5 Canvas绘制时钟以及绘制运动的圆
1.绘制时钟 <!-- js代码 --> <script type="text/javascript"> window.onload=function(){ ...
- 解析库之re,Beautifulsoup
本篇导航: 介绍 基本使用 遍历文档树 搜索文档树 总结 re模块在之前的python进阶中有讲过不再做过多的阐述,本篇为BeautifulSoup库的分析 20.collections模块和 ...
- 20175324 《Java程序设计》第3周学习总结
# 学号 20175324 <Java程序设计>第3周学习总结 ## 教材学习内容总结 在蓝墨云中的教程里学习了如何安装IDEA,并且尝试了自己破解IDEA,主要在看书时,对java中的类 ...
- laravel5.5 任务调度 (转载)
Ubuntu和Mac环境中,我们可以使用crontab来控制计划任务 1. 定义调度 我们需要在 App\Console\Kernel 类的 schedule 方法中定义所有任务调度.例如: 上图中定 ...
- es6 ...克隆与函数深度克隆
es6的...运算, 可以进行一层的深度克隆; 在多层的情况下,不要用这种啊. 用深度克隆函数,或者JSON.parse(JSON.stringify(obj)),但json方式要求不能有属性值是函数 ...
- Dev TreeList 添加节点图标问题
1. 在设计界面添加imageCollection控件,在属性页设置图标(可Load from disk,也可从Load from dev gallery) 2. TreeList控件有一个叫做Cus ...
- Lucene.net 的性能探究--Lucene.net 的并发处理能力到底有多强?
这篇博客并不是证明Lucene.net的性能有多强悍,实际上Lucene.net的并发能力并不让人很满意,这得看你怎么用它. 因为Lucene 本身就是一个搜索引擎的基础框架,相当于一辆车子的发动机, ...
- Cassandra最小化安装
Cassandra最小化安装 环境 CentOS 7.2 64位 IP_address:172.27.0.8 安装包装备 [root@master ~]# ll /usr/local/src tota ...
- react将字符串转义成html语句
在使用reactjs库的时候,会遇到将一段html的字符串,然后要将它插入页面中以html的形式展现,然而直接插入的话页面显示的就是这段字符串,而不会进行转义,可以用以下方法插入,便可以html的形式 ...
- 1840: Jack Straws
1840: Jack Straws 时间限制(普通/Java):1000MS/10000MS 内存限制:65536KByte 总提交: 168 测试通过:129 描述 I ...