Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
a3733092 opened this issue Nov 26, 2019 · 11 comments

Comments

@a3733092
Copy link

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

@gangly
Copy link
Owner

gangly commented Nov 26, 2019

在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

@a3733092
Copy link
Author

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

@a3733092
Copy link
Author

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

@gangly
Copy link
Owner

gangly commented Nov 27, 2019

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

@gangly
Copy link
Owner

gangly commented Nov 27, 2019

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

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

@a3733092
Copy link
Author

a3733092 commented Nov 27, 2019

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

@gangly
Copy link
Owner

gangly commented Nov 27, 2019

已新增order_enum类型

@a3733092
Copy link
Author

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

image

@a3733092
Copy link
Author

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

@gangly
Copy link
Owner

gangly commented Nov 28, 2019

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

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

@a3733092
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants