Измененное имя параметра с переменной в Python

Я перевожу код 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

)

Как я могу достичь того же результата в Python, не возвращаясь к операторам if / else?

0

Решение

Вы не можете иметь переменные имена ключевых аргументов в вызове функции 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 как переменная, не делая никаких синтаксических различий между ними. Нет способа, которым это сработало бы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]