python - 用引号将每个元素括在字符串元组中
问题描述
我需要查询数据库并在where link in (....)
. 问题是(...)
因为“元组”是动态的。如果我这样做:
input_links = get_links() # [<link1>,...]
query = f"SELECT * from myTable where link in {tuple(input_links)}
除非input_links
包含一个链接,否则工作正常,那么最后一部分会(link1,)
破坏查询。
我试过使用
input_links = get_links() # [<link1>,...]
link_tpl = f'({",".join(input_links)})'
query = f"SELECT * from myTable where link in {link_tpl}
但这将元组中的整个参数包含在一个引号中,例如('link1,link2,link3')
而不是('link1','link2','link3')
.
我知道我可以做一个
if len(input_links)==1:
query = f"SELECT * from myTable where link={input_links[0]}"
else:
f"SELECT * from myTable where link in {tuple(input_links)}
但它只是困扰我,我不能把它作为一个声明。
解决方案
您可以将每个项目映射input_links
到字符串格式化程序:
query = f'''SELECT * from myTable where link=({', '.join(map("'{}'".format, input_links))})'''
推荐阅读
- php - 重定向到另一个页面并显示警告消息错误
- django - 如何将 Django 查询集导出到 csv 文件
- angular - 更改 Angular 中反应形式的值
- mysql - MySQL:正向工程,错误 1826
- python - 如何解决 sqlalchemy.orm.exc.UnmappedInstanceError
- java - 无法使用 Flink Table API 打印 CSV 文件
- reactjs - 如何让我的 props.children 属性的引用使用“测量”方法?
- mysql - 为什么我会收到此错误:_mysql.c(29):致命错误 C1083:无法打开包含文件:'mysql.h'?
- flutter - 如何在颤动中向列添加滚动
- database - 如果没有数字行索引,如何在 MongoDB 上进行多次第二批查询(跳过)