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

Posted xiaxiaoxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()
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生成虚拟数据的主要内容,如果未能解决你的问题,请参考以下文章

Flask实战-留言板-使用Bootstrap-Flask简化页面编写

Flask实战-留言板-使用Flask-DebugToolbar调试程序Flask配置的两种组织形式

从 python 生成 Faker 数据并将其加载到 BigQuery 嵌套表中

随机生成测试数据<faker模块的基本使用;

Python:随机生成测试数据的模块--faker的基本使用

使用python包faker生成仿真数据