[英]How to format a multi line string with triple quotes inside using Python?
[英]Python arguments inside triple quotes
我有一個包含 sql 查詢的 python 腳本。 出於格式化目的,我在 sql 查詢周圍使用三重引號。 我想將從命令行填充的變量注入到查詢中。 如何在保留三重引號的同時做到這一點。 有沒有更好的方法來繞過三重引號?
前任:
AGE = raw_input("Enter your age: ")
vdf = vertica.select_dataframe("""
Select
col1
col2
coln
FROM
TableX
WHERE
col2 IN (21, 22, AGE)
Group BY 1
""")
您可以使用如下格式 :
AGE = raw_input("Enter your age: ")
query_1 = """
Select
col1
col2
coln
FROM
TableX
WHERE
col2 IN (21, 22, {})
Group BY 1
"""
vdf = vertica.select_dataframe(query_1.format(AGE))
一個帶有三重引號和多個賦值的簡單示例是:
>>> age = 100
>>> name = "koukouviou"
>>> """I am {} and I am {} years old""".format(name, age)
'I am koukouviou and I am 100 years old'
您可以將查詢字符串分開,並使用格式設置正確的年齡,例如:
a_query = """
Select
col1
col2
coln
FROM
TableX
WHERE
col2 IN (21, 22, {})
Group BY 1
"""
vdf = vertica.select_dataframe(a_query.format(AGE))
我很驚訝,沒有提到神話般的%
運算符,以字符串格式構建的python將使您的原始行進行微小的修改即可工作:
AGE = raw_input("Enter your age: ")
vdf = vertica.select_dataframe("""
Select
col1,
col2,
coln
FROM
TableX
WHERE
col2 IN (21, 22, %s)
Group BY 1
""" % AGE)
這也適用於具有多個參數的查詢:
AGE = raw_input("Enter your age: ")
GENDER = raw_input("Enter your gender (m/f): ")
HEIGHT = raw_input("Enter your height in cm: ")
vdf = vertica.select_dataframe("""
INSERT INTO stats (
age,
gender,
height
)
VALUES
(
'%s',
'%s',
'%s'
)
""" % ( AGE, GENDER, HEIGHT ))
我將再加上一個dict
再加上一個答案,因為它使我的生活變得更加簡單。 使用@ hexerei-software的INSERT
示例:
AGE = raw_input("Enter your age: ")
GENDER = raw_input("Enter your gender (m/f): ")
HEIGHT = raw_input("Enter your height in cm: ")
settings = {'AGE': AGE, 'GENDER': GENDER, 'HEIGHT': HEIGHT}
vdf = vertica.select_dataframe("""
INSERT INTO stats (
age,
gender,
height
)
VALUES
(
'{AGE}',
'{GENDER}',
'{HEIGHT}'
)
""".format(**settings))
我更喜歡使用f-Strings !
vdf = vertica.select_dataframe(f"""
Select
col1
col2
coln
FROM
TableX
WHERE
col2 IN (21, 22, {AGE})
Group BY 1
""")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.