首页 > 解决方案 > 在传递参数时使用 Python 读取文件

问题描述

我正在尝试读取其中包含此参数的文件{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.xstring

解决方案


用于str.format替换{year}.

f 字符串是文字,必须是表达式。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,))

MySQLdb


推荐阅读