我正在解析Excel工作表,并希望将数据存储在数据库(MySQL)中。通过Excel工作表可以获取存储数据表的信息。我想使用调度表来决定存储哪个Object。所需的字段可能有所不同。
我找到了一些我希望可以工作的东西,但不幸的是没有:
python: dispatch method with string input
func_name_dict = {
'Assay': Assay.objects.get_or_create()
}
def dispatch(name, *args, **kwargs):
return func_name_dict[name](**kwargs)
dispatch('Assay', name='ChIP-Seq')
我希望新对象将被存储或获取并返回给调用者。
似乎发生的是获取3个现有的DB记录(都具有不同的名称):
website.models.MultipleObjectsReturned: get() returned more than one Assay --
it returned 3!
您正在调用hi参数的方法并将结果存储在dict中,而不是将可调用方法本身串起来。你应该做:
func_name_dict = {
'Assay': Assay.objects.get_or_create
}
即没有括号。
(虽然如果你只有一个条目,我不确定这样的发送方式。)
评论后编辑
确实,你有两个名为name
的参数,一个作为位置参数,一个作为kwargs。你将需要调用第一个param,这些东西永远不会出现在kwargs中 - 例如,dispatch_func_name
,或者其他什么。