码迷,mamicode.com
首页 > 其他好文 > 详细

Flask实战-留言板-使用Faker生成虚拟数据

时间:2019-04-27 22:52:30      阅读:355      评论:0      收藏:0      [点我收藏+]

标签:获得   区域   参数   dog   开发   das   ane   一个   简体   

使用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()
uShane Schmidt
>>> fake.address()
u5327 Mcintosh Knolls\nScottshire, SC 42652
>>> fake.text()
uBefore least case never process financial upon instead.
>>> fake.text()
uIncluding 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生成虚拟数据

标签:获得   区域   参数   dog   开发   das   ane   一个   简体   

原文地址:https://www.cnblogs.com/xiaxiaoxu/p/10780825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!