模型映射器0.4.5

modelmapper的Python项目详细描述


======




自动生成orm模型,以**确定性**的方式直接从csv文件推断规范化和清理功能。
===



日期时间,十进制等值。
-具有数百个字段的CSV
-基于所有这些变体手工创建ORM和API。
-为模型手工创建API端点。

csvs.

安装
=


``pip install modelmapper``


注意:modelmapper需要python 3.6或更高版本。


如何安装?
====

>1。逐个导入每个培训csv
2。根据设置中定义的规则规范字段名:
``field_name_full_conversion``和``field_name_part_conversion`
3。分析每个csv每个字段的所有值,以推断
数据的类型,以及清除数据并将数据转换为数据库的正确格式所需的功能。
4。将每个csv的分析结果写入单个toml文件。在
这一点上,没有对CSV进行比较。
5.将不同CSV之间的结果组合起来,以确定应
某个字段的最终决策。
6。如果系统对
某些字段信心不足,请提示用户。
7。用户可以选择覆盖
单独覆盖toml文件中的字段信息。
8。最后决定字段类型并写入orm
模型文件。
9。用户可以继续并验证插入到orm模型中的字段是否正确。
10。现在,用户可以通过执行alembic
自动生成来生成alembic迁移文件。modelmapper提供了在插入数据库之前清除每行数据的功能。但是,用户可以使用该功能。



工作流
==


1。安装modelmapper

``pip安装modelmapper`

2。启动模型的设置

``modelmapper init mymodel`

向导将指导您进行配置。

3.将培训csv文件复制到同一文件夹

4。git commit,这样您就可以看到生成内容的差异。

5。生成sqlalchemy模型和清理数据所需的一切!

`` modelmapper运行mymodel_setup.toml`

6。验证生成的模型

7。运行alembic autogenerate创建数据库迁移文件

8。迁移数据库

9。通过modelmapper导入数据:启动路径为
的映射程序到您的setup toml文件,并通过
get_csv_data_cleaned函数读取清除csv。

10。如何将清理后的数据插入
数据库,由用户决定。CSV中有新字段或发生了更改?不要直接修改生成的模型。相反,将此csv添加到设置toml文件中的培训csv列表中。重新训练系统。使用
git diff查看已更改的内容。

等,并快速遍历您的模型。

通过运行
``modelmapper init[identifier]`

示例:

…代码::toml

[设置]
空值=["\\n","na","unk","null","none","nan","1/0/00","1/0/1900","-"]\"1"]任何应被视为布尔真的字符串
布尔假=["假","f","否","n","0"]任何应被视为布尔假的字符串
美元到美分=真;如果是,则当字段标记为货币字段时,csv中的值将乘以100在整数字段中存储为分。即使原始数据是十进制的。
percent_to_decimal=true;如果是,则当字段标记为percent values时,csv值将除以100放入数据库。示例:10变为0.10
add_digits_to_decimal_field=2;这是用于填充十进制字段。如果训练CSV中最大的十进制大小是例如xx.xxx,则每边填充2将定义一个可以容纳xxxx.xxxxx的数据库字段
将字符串字段的填充添加到字符串长度=32。如果训练CSV中的最大字符串长度为X,则DB字段大小将为X+填充。
DateTime允许的字符数="0123456789/:-";如果训练CSV中的字符串值包含DateTime允许的字符数的子集,然后,将评估该字符串值是否可能具有datetime值。
datetime_formats=[%m/%d/%y",%m/%d/%y,%y%m%d]所有培训CSV中任何可能的datetime格式的列表。
field戋u full戋conversion=[]使用此命令告诉modelmapper哪个字段名称应视为同一字段。如果字段名在不同的csv之间发生更改,则这非常有用。例如,[[['field 1','field a'],['field 2','field b']]
br/>br/>field \;;35;;35;;;35\353535;;"数字",["(e/N)",["(Y/N)","",["(S)",,,["(E,S)","",,[["(E,S)",,,[[y y yyyymmdd","",",,,[",",,,,[,",[",",",,",[,,,",",",",,",",,,",",",,,"?",["-","?",["%","?"","[ ] ]",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,相等的",[",",",",[",""]]字段名中应替换为另一个单词的单词列表。
如果字段名中有"美元"值,则将其视为"货币"字段。只有当dollar_to_cent为真时才重要
non_string_fields_are_all_nullable=true;如果是,任何非string字段都将自动为空。否则,只有在培训csv中有空值时,才会将其标记为可空。
字符串字段可以是空的=假的;通常字符串字段不应该是空的,因为它们只能是空的。如果将其设置为true,则如果任何训练CSV中的字符串字段中有空值,则它将标记该字段为空。
training_csvs=[]\training CSV的相对路径列表
output_model_file=''\ORM模型文件的相对路径输出生成的模型将被插入。

[settings.max_int]
32767="smallinteger"训练csv中包含此值以下所有数字的整数字段将被标记为smallinteger。如果不需要任何smallintegerfields,请删除这一行。
2147483647="integer"在训练csv中,一个包含所有数字的整数字段,但至少一个大于smallinteger的字段将标记为integer
9223372036854775807="biginger"一个包含所有数字的整数字段低于此值但至少有一个高于培训CSV中的整数将标记为bigInteger


f.a.q
=



ModelMapper是一次性工具吗?
——设计成确定性的。如果它不能推断出训练csv中的任何数据类型更改,那么它应该保持模型的完整性。我们的想法是,您的数据应该定义您的模型,而不是以其他方式定义。只有当modelmapper从
您的数据推断需要更改orm架构时,它才会更新您的模型。

我的orm模型中有某些字段不在培训csv中。这是怎么回事?
——您可以在这些标记之外使用任何其他字段和功能
,并且modelmapper不会接触这些标记。


modelmapper似乎很容易受到sql注入的影响
服务器。
ModelMapper仅用于开发时。它关注的是帮助开发人员以自动方式做出正确的选择。它甚至不需要考虑sql注入。在将数据放入
数据库之前,必须使用
orm推荐的方法来转义数据。| Circleci图像::https://circleci.com/gh/wearefair/modelmapper.svg?style=svg
:目标:https://circleci.com/gh/wearefair/modelmapper

主页:https://github.com/wearefair/modelmapper
作者:sep dehpour
作者电子邮件:sepd@fair.com
许可证:未知
下载网址:https://github.com/wearefair/modelmapper/tarball/master
描述:未知
平台:未知
分类器:目标受众::开发人员
分类器:操作系统::操作系统无关
分类器:主题::软件开发
分类器:编程语言::python::3.6
分类器:编程语言::python::3.7
分类器:开发状态::4-beta

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

推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值