在Python中使用变量修改参数名称

时间:2014-09-22 23:47:38

标签: php python mysql

我正在将PHP代码翻译成Python代码,该代码将数据插入到MySql表中。

根据命名约定,有四个可能的列: image_ + [hq,sq,lq,thumb] + _url

php代码如下(使用Laravel DB Query):

DB::table('items')
                ->insertGetId(array(
                   'title' => $title,
                    'image_' . $quality . '_url' => $amazon_url,
                ));

相应的python代码(使用SqlAlchemy Core),它给我一个语法错误:

item_ins = items_tbl.insert().values(title=item_title, 
                                                   image_+quality+_url=amazon_url

            )

如何在不恢复if / else语句的情况下在Python中完成相同的结果?

1 个答案:

答案 0 :(得分:1)

在Python函数调用中,您不能具有可变命名的关键字参数。但是,您可以将dict扩展为关键字参数:

item_ins = items_tbl.insert().values(**{'title' : item_title,
                                        'image_'+quality+'_url' : amazon_url})

例如quality=='hq',这相当于调用

item_ins = items_tbl.insert().values(title = item_title,
                                     image_hq_url: amazon_url)

您还应该注意,在您尝试使用的语法中,您尝试将image__url视为字符串文字,将quality视为变量,而不对它们进行任何语法区分他们。没有办法可行。