用模拟实例填充数据库。

fillmydb的Python项目详细描述


用模拟实例填充数据库。

将orm模型包装到modelwrapper中,指定字段的外观 然后生成每个模型需要的实例数。

安装

  • pip install fillmydb[peewee]如果您计划将其与peewee型号一起使用
  • pip install fillmydb[django]如果您计划将其用于djanog型号(尚未实现)
  • pip install fillmydb[sqlalchemy]如果您计划将其用于sqlalchemy模型(尚未实现)

fake-factory

一起使用

为单个模型生成实例:

import faker

factory = faker.Factory.create()

wrapper = ModelWrapper(TestModel)

wrapper[TestModel].client_name = FieldSpec(factory.name)
wrapper[TestModel].description = FieldSpec(factory.text)
wrapper[TestModel].password_hash = FieldSpec(factory.binary, length=25)
wrapper[TestModel].email = FieldSpec(factory.email)
wrapper[TestModel].visits = FieldSpec(factory.pyint)

item = wrapper.generate(100)

为多个模型生成实例:

from tests.models import User, Post, Like
import faker

factory = faker.Factory.create()

wrapper = ModelWrapper(User, Like, Post)

wrapper[User].name = FieldSpec(factory.name)
wrapper[User].username = FieldSpec(factory.user_name)
wrapper[User].description = FieldSpec(factory.text)
wrapper[User].password_hash = FieldSpec(factory.binary, length=25)
wrapper[User].email = FieldSpec(factory.email)
wrapper[User].visits = FieldSpec(factory.pyint)

wrapper[Post].title = FieldSpec(lambda _: "test", 1)
wrapper[Post].text = FieldSpec(factory.text)

# generating 10 users, 100 likes and 20 posts
wrapper.generate(10, 100, 20)

一般工作流程

伪代码:

initial_to_order_queue()
while models_to_process():
    model = get_next_model()

    if model.has_unresolved_dependency():
        push_back_to_queue(model)

    # process model
    for _ in range(number_of_instances):
        for field in model.fields():
            # resolve_field(field)
            if field == ForeignKey:
                field = get_random_ref_model_instance()
            else:
                field = resolve_normal()
    mark_as_processed(model)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程Java可运行接口解决方案   java指向这些方法的uri是什么样子的   java处理:一个对象忽略if语句   在DispatcherServlet中找不到URI为[***]的HTTP请求的java映射   java Weka未启动。只有黑屏消失了   java如何根据对象的一个属性对对象数组进行排序?   eclipse在Kotlin注释参数中使用java常量   用于截锥剔除的java截锥未正确创建   java如何让多个活动使用相同的跟踪活动?   通过安卓的woocommerce api中的java错误Url   来自另一个文件的JSTL中每个循环的java   java使用安卓应用程序中的数据库保存gps位置   Java中比较linkedHashMap值和字符串的类型转换   在java中,有没有一种方法可以从一开始就使用Kafka流(而不是通过KafkaConsumer)读取消息?   使用jmonkeyengine在安卓上运行basicgame的java疑难解答   java中的millis字符串格式   Java泛型、反射API和JDBC:无法映射Java。朗和爪哇。sql。类型的时间戳   java在DynamoDB中以历元格式自动填充时间