首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySql从table_name中选择*,其中col_name IN (任意值)

MySql从table_name中选择*,其中col_name IN (任意值)
EN

Stack Overflow用户
提问于 2021-01-21 14:28:23
回答 3查看 142关注 0票数 1

我正在动态地生成python元组。

代码语言:javascript
运行
复制
x = (1, 3)

所以我可以在python中使用MySql查询,如下所示,

代码语言:javascript
运行
复制
f"SELECT * FROM table_name WHERE col_name IN {x}"

而且没有问题。

但是,当我使用空元组作为x( x = ())时,我希望查询返回表的所有值(只需忽略条件)

我知道,只有当x不是null时,我才能在python中使用if并将筛选器传递给sql。但是我想在sql中使用它,这样就更容易了,因为实际的查询字符串太长了,而且在许多地方也有相同的问题。

所以我的问题是,

在MYSQL中有一种方式像下面这样,

代码语言:javascript
运行
复制
SELECT * FROM table_name WHERE col_name IN (%)

就像我们用

代码语言:javascript
运行
复制
SELECT * FROM table_name WHERE col_name LIKE "%"
EN

Stack Overflow用户

回答已采纳

发布于 2021-05-05 04:56:56

代码语言:javascript
运行
复制
def sql_escape(s, replace_all=False):
if replace_all:
    s = s.replace("_", "\\_").replace("%", "\\%")
return s.replace("\\", "\\\\") \
    .replace("\'", "\\\'") \
    .replace("\"", "\\\"")
def sql_in(col, values, default="TRUE"):
    if values is None:
        return default
    values = set(values) - {""}
    if len(values):
        values = ",".join("\'" + sql_escape(str(v).strip()).replace("%", "\\%").replace("_", "\\_") + "\'"
                          for v in values)
        return f"{col} IN ({values})"
    else:
        return default
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65829569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档