Я пишу функцию, которая принимает некоторые аргументы и строит строку запроса SQL. В настоящее время у каждого аргумента ключевого слова назначается строка по имени, и я думаю, что должен быть более простой способ автоматически форматировать аргументы ключевого слова, ожидаемые в строке. Мне интересно, можно ли автоматически форматировать (или назначать) аргумент ключевого слова строке запроса, если имя аргумента совпадает.Параметры автоматического форматирования строки
Вот моя текущая функция:
def create_query(
who_id,
what_id=None,
owner_id=None,
subject,
description,
due_date,
is_closed=False,
is_priority=False,
is_reminder=True,
):
query_str = """
'WhoId':'{who_id}',
'Subject':'{subject}',
'Description':'{description}',
'ActivityDate':'{due_date}',
'IsClosed':'{is_closed}',
'IsPriority':'{is_priority}',
'IsReminderSet':'{is_reminder}',
""".format(
who_id=who_id,
subject=subject, # Mapping each of these to the
description=description, # identically named variable
due_date=due_date, # seems dumb
is_closed=is_closed,
is_priority=is_priority,
is_reminder=is_reminder,
)
И я хотел бы что-то больше, как это:
def create_query(**kwargs):
query_string = """
'WhoId':'{who_id}',
'Subject':'{subject}',
'Description':'{description}',
...
""".format(
for key in **kwargs:
if key == << one of the {keyword} variables in query_string >>:
key = << the matching variable in query_string >>
Спасибо за вашу помощь в этом. Как вы рекомендуете обрабатывать дополнительные kwargs? Например, есть некоторые элементы, которые могут не иметь отношения к запросу, но я хочу предоставить возможность их создания в запросе. В этом примере, если я не передал значение для описания, была бы ключевая ошибка. Согласился, что это не является оптимальным для построения строки запроса, но я работаю с API Salesforce, поэтому я не уверен, как иначе обращаться с этим, кроме как дезинфицировать для цитат и двойных кавычек. –
@JoeFusaro Значит, вы хотите значения по умолчанию, или вы не хотите, чтобы они были в окончательной строке запроса? –
Предпочтение было бы в том, что они вообще не находятся в конечной строке запроса, но значения по умолчанию - в порядке. Не уверен, что оптимально. Я думал о конкатенации на основе, если они включены в kwargs (например, если kwargs ['description']: query_string + = "" ", 'Description': '{description}' .....), но это кажется беспорядочным. –