vlambda博客
学习文章列表

Mimesis是一个用于Python的高性能伪数据生成器

Mimesis是一个用于Python的高性能伪数据生成器,它以各种语言为各种目的提供数据。

模拟-假数据发生器



Description

Mimesis是一个用于Python的高性能伪数据生成器 Mimesis是一个用于Python的高性能伪数据生成器 

Mimesis是一个用于Python的high-performance伪数据生成器,它用各种语言为各种目的提供数据。这些假数据可以用来填充测试数据库,创建假API端点,创建任意结构的JSON和XML文件,匿名化从生产中获取的数据等等。

主要特点是:

  • 性能:Python可用的最快的数据生成器。

  • 可扩展性:您可以创建自己的数据提供程序,并将其用于模拟。

  • 通用数据提供程序:从单个对象对所有提供程序的简化访问。

  • 多语言:支持多种语言的数据。

  • 数据多样性:支持多种用途的数据提供程序。

  • Schema-based生成器:提供了一种简单的机制,可以通过任何复杂的模式生成数据。

  • Country-specific数据提供程序:仅为某些国家/地区提供特定数据。

Installation

要安装mimesis,只需使用pip:

[venv] ~ ⟩ pip install mimesis

Usage

这个库非常容易使用,您所需要的一切只是导入一个表示您所需数据类型的对象(我们称之为这种对象提供程序)。

在下面的示例中,我们导入provider Person,它表示与个人信息相关的数据,例如姓名、姓氏、电子邮件等:

>>> from mimesis import Person
>>> person = Person('en')

>>> person.full_name()
'Brande Sears'

>>> person.email(domains=['mimesis.name'])
'[email protected]'

>>> person.email(domains=['mimesis.name'], unique=True)
'[email protected]'

>>> person.telephone(mask='1-4##-8##-5##3')
'1-436-896-5213'

关于其他提供商的更多信息,请参阅我们的文档。

Locales

Mimesis目前支持34种不同的语言环境。您可以在创建提供程序时指定一个区域设置,它们将返回与该区域设置关联的语言或国家/地区相适应的数据。

让我们看看它是如何工作的:

>>> from mimesis import Person
>>> from mimesis.enums import Gender

>>> de = Person('de')
>>> en = Person('en')

>>> de.full_name(gender=Gender.FEMALE)
'Sabrina Gutermuth'

>>> en.full_name(gender=Gender.MALE)
'Layne Gallagher'

Providers

有关详细信息,请参阅API参考。

生成结构化数据

您可以生成可以轻松转换为任何格式(JSON/XML/YAML等)的字典,该格式具有您想要的任何结构。

让我们构建一个虚拟的API端点,使用Flask来说明这个想法:

from flask import Flask, jsonify, request
from mimesis.schema import Field, Schema
from mimesis.enums import Gender

app = Flask(__name__)


@app.route('/apps', methods=('GET',))
def apps_view():
locale = request.args.get('locale', default='en', type=str)
count = request.args.get('count', default=1, type=int)

_ = Field(locale)

schema = Schema(schema=lambda: {
'id': _('uuid'),
'name': _('text.word'),
'version': _('version', pre_release=True),
'timestamp': _('timestamp', posix=False),
'owner': {
'email': _('person.email', domains=['test.com'], key=str.lower),
'token': _('token_hex'),
'creator': _('full_name', gender=Gender.FEMALE)},
})
data = schema.create(iterations=count)
return jsonify(data)

在下面的屏幕截图中,您可以看到来自这个伪API(/apps)的响应:

有关详细信息,请参见架构和字段。

Documentation

您可以在阅读文档上找到完整的文档。

它分为几个部分:

  • Foreword

  • Getting Started

  • 提示和技巧

  • API Reference

  • Contributing

  • Changelog