我正在将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中完成相同的结果?
答案 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
视为变量,而不对它们进行任何语法区分他们。没有办法可行。