向分派方法传递参数

2024-04-19 14:57:46 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 我对Python和Django比较陌生。你知道吗

我正在解析Excel表格,并希望将数据存储在DB(MySQL)中。数据存储在哪个表中的信息可以通过Excel表获得。我想使用分派表来决定存储哪个对象。所需的字段可能不同。你知道吗

我发现了一些我希望有用的东西,但不幸的是没有:

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!

Tags: 数据对象djangonamedbgetexceldict
1条回答
网友
1楼 · 发布于 2024-04-19 14:57:46

您调用的是包含hi参数的方法,并将结果存储在dict中,而不是将可调用方法本身串起来。你应该做:

func_name_dict = {
    'Assay': Assay.objects.get_or_create
}

没有括号。你知道吗

(虽然如果你只有一个条目的话,我不确定这样一个调度命令的意义。)

评论后编辑

实际上有两个参数叫做name,一个作为位置参数,另一个在kwargs中。您将需要调用第一个参数—一些永远不会出现在kwargs中的东西—例如,dispatch_func_name,或者其他什么。你知道吗

相关问题 更多 >