我有一个应用程序内的模型引擎,我以CSV格式导出,然后使用应用程序配置文件以及散货装载机.yaml. 在
我可以导入和导出大多数模型,但我有一个问题,模型的外键并不总是存在。我可以使用下面的lambda导入始终将外键作为None
导入,或者在csv文件中的每一行都有外键时使用create_foreign_key()
转换导入外键。在
如何配置bulkloader.py当外键存在时导入外键,而不存在时忽略它?在
- kind: MyModel
connector: csv
connector_options:
property_map:
- property: myOtherModel
external_name: myOtherModel
import_transform: "lambda x: x is None and None or None"
#import_transform: transform.create_foreign_key('MyOtherModel', key_is_id=True)
export_transform: transform.key_id_or_name_as_string
只要取消注释第二个import_transform
来代替lambda转换,就会产生这个错误。在
运行时发生此错误应用程序配置文件. 所有其他没有外键或始终存在外键的导入都正常工作。在
appcfg.py upload_data --config_file=bulkloader.yaml --num_threads=1 --batch_size=50 --url=http://localhost:8080/remote_api --email=Chris --passin --kind=MyModel --filename=MyModel.csv
csv文件中的myOtherModel
列有时包含MyOtherModel.key().id()
,有时不包含。在
例如
myOtherModel
1234
4567
2345
5678
当
foreign key
值不存在时,reference property
取值:None
并为此编写代码:如您的错误消息所示:}
value does not exist
显示您使用'othercolumn','','anohtercolumn'
而不是{因此,如果源“”要处理此问题:
从这个链接:http://eikke.com/python-ifelse-in-lambda/ 正如Thomas Thurman所言,lambda表达式应该如下所示:
^{pr2}$我希望对你有用
解决这一问题的一种方法是:
导入所有没有键的实体散货装载机.yaml没有为模型指定键属性导入转换。
导出所有实体。
导入实体。(所有这些现在都有键值)
一个稍微好一点的变化:
使用散货装载机.yaml使用键属性导入转换。
使用散货装载机.yaml没有键属性导入转换。
这有点麻烦。我想有一种方法,让实体丢失一个键值自动分配一个导入。在
相关问题 更多 >
编程相关推荐