【问题标题】:Read file with Python while passing arguments在传递参数时使用 Python 读取文件
【发布时间】:2021-06-15 23:47:49
【问题描述】:

我正在尝试读取其中包含此参数 {year} 的文件。

在这个文件里面有这个字符串: SELECT * FROM TABLE WHERE YEAR = {year}

我想用Python f-strings 读取这个文件,以便在之后使用查询。

预期的结果如下所示: SELECT * FROM TABLE WHERE YEAR = 2019

我试过这个:

year = 2019
with open("test.sql") as query_file:
     query = query_file.read()
print(query)

但输出是SELECT * FROM TABLE WHERE YEAR = {year} 而不是SELECT * FROM TABLE WHERE YEAR = 2019

我不知道如何将year 变量替换为文件中的{year}

【问题讨论】:

    标签: python-3.x string


    【解决方案1】:

    使用str.format 替换{year}

    f-strings 是文字并且必须是一个表达式。 Python不会替换字符串中的数据,只是因为括号表示法中有一个同名的变量。

    query = 'SELECT * FROM TABLE WHERE YEAR = {year}'
    query.format(year=2019)
    

    编辑:
    要替换 SQL 查询中的值,最好使用准备好的语句,例如:

    c = db.cursor()
    year = 2019
    c.execute("SELECT * FROM TABLE WHERE YEAR = %s;", (year,))
    

    另请参阅examples of MySQLdb

    【讨论】:

    • 谢谢,但我真正的查询是巨大的,它在一个文件中。我用这个简短的版本只是为了说明。
    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2018-03-28
    • 2016-12-22
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多