三引号内的 Python 参数

标签 python mysql string string-interpolation

我有一个包含 sql 查询的 python 脚本。为了格式化目的,我在 sql 查询周围使用了三重引号。我想将从命令行填充的变量注入(inject)到查询中。我怎样才能在保留三重引号的同时做到这一点。有没有更好的方法来绕过三重引号?

例如:

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
""")

最佳答案

令我惊讶的是,神奇的 % 运算符没有被提及,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 ))

关于三引号内的 Python 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29336414/

相关文章:

python - 捕获内置异常(而不是自定义异常)

Python,如何将此公式应用于数据库中的每一行,以便每一行给出不同的值,而不是每年的相同值

python - 如何将GPU上训练的模型加载到CPU(系统)内存中?

c# - 无法使用 c# System.Data.SqlClient 连接到本地数据库

mysql - 如何正确使用Group By?

检查输入以查看用户是否输入了 control-d

pip install --user 时 Python console_scripts 不起作用

mysql - 在表 SQL 中生成日期

Javascript将多行字符串拆分为对象

string - 使用不正确的字符串格式时如何从编译器获取消息