1
我正在寫一個函數,它接受一些參數並構建一個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?例如,某些項目可能與查詢無關,但我想提供將它們構建到查詢中的選項。在這個例子中,如果我沒有給Description傳遞一個值,那麼會出現一個關鍵錯誤。一致認爲,這是不是最佳的建立查詢字符串,但我正在與Salesforce API,所以我不知道除了消毒報價和雙引號以外如何處理這一點。 –
@JoeFusaro你的意思是你想要默認值,或者你不希望他們在最後的查詢字符串呢? –
首選項是根本不在最終查詢字符串中,但默認值是正確的。不知道什麼是最佳的。我想基於它們是否包含在kwargs中(例如,如果kwargs ['description']:query_string + =「」「,'Description':'{description}'.....),但這似乎很混亂。 –