gangly/datafaker

enum枚举希望实现顺序取文件值,请帮忙告知一下源码读取文件的代码在哪个函数

Opened this issue · 11 comments

作者您好,现有需求需要实现从文件数值按顺序写入指定数据库,目前在看您的源码,fake_enum函数接收一个用户输入参数如[:enum(1,2)],转化为列表,然后调random随机取值,但是没看到[:enum(names.txt)]这种方式函数如何解析的。麻烦告知一下,谢谢~
image

在datafaker/dbs/basedb.py文件parse_schema_from_rows函数部分
if cmd == 'enum':
if len(rets) == 0:
raise EnumMustNotEmptyError

            # 如果enum类型只有一个值,则产生固定值
            # 如果enum类型只有一个值,且以file://开头,则读取文件
            if len(rets) == 1 and rets[0].startswith(ENUM_FILE):
                rets = read_file_lines(rets[0][len(ENUM_FILE):])

            if ctype in INT_TYPES:
                args = [int(ret) for ret in rets]
            elif ctype in FLOAT_TYPES:
                args = [float(ret) for ret in rets]
            else:
                args = rets

好的,非常感谢~我去试试能不能改改

您好,现在大部分逻辑理清了,就还有一个问题,如果我遍历列表,用return只能返回第一个值,用yield的话,就会生成一堆对象的地址。。
image
image

感谢提供代码和修改意见,我近期会尽快合并代码实现顺序enum功能

您好,现在大部分逻辑理清了,就还有一个问题,如果我遍历列表,用return只能返回第一个值,用yield的话,就会生成一堆对象的地址。。
image
image

这里不能用yield,需要用一个变量标记数组index递增,实现循环顺序取值。
比如数组是10个值,需要产生30个值,需要循环顺序遍历3次

我在init函数里定义了一个index初始化为0,然后在函数内部累加,但好像还不是按顺序插入的。。能大概讲解一下实现逻辑嘛
image

已新增order_enum类型

非常感谢,不过我刚刚更完最新版本发现,如果2个字段都用顺序枚举,就会出现下面这种问题。。

image

而且麻烦顺序枚举能够支持从文件读取,目前order_enum无法识别file://开头的txt文件。如下图
image

而且麻烦顺序枚举能够支持从文件读取,目前order_enum无法识别file://开头的txt文件。如下图
image

已经支持了,请更新到最新版本0.6.2

已更新到0.6.2,已经支持,非常感谢!