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