python-3.x - 在传递参数时使用 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}
文件内部。
解决方案
用于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,))
推荐阅读
- azure - Azure KeyVault 和 Scala 2.11 和 Spark 2.4.4
- chisel - 如何使用两个管理器将客户端连接到 IdentityNode?
- javascript - 如何在 react-id-swiper 中正确居中和对齐图像
- python - 熊猫评分系统;显示关系为“3-4”
- python - 构建函数以可视化 Alphafold2 预测的麻烦
- c - 在 C 中打印 char* 时,仅打印第一个字符
- abp - abp io AbpDataFilterOptions
- satellite-image - 为什么有些 Sentinel-2 场景遵循 SAFE 格式,而有些则不遵循?
- spring-boot - 在 Kafka Joins 中丢失一些事件
- sql-server - 如何解决 Azure SQL 数据库性能问题?