Python 不同的WHERE子句取决于表架构

Python 不同的WHERE子句取决于表架构,python,mysql,sql,where,Python,Mysql,Sql,Where,我正在尝试使用“mysqldump”命令行工具为数据库创建一个mysql转储,我希望做一些独特的事情。本质上,如果表包含某一列,则根据这些约束进行转储,否则,转储整个表。但是由于mysqldump命令行选项的性质,这一切都必须在一个WHERE子句中 在psuedo代码中,我必须执行以下操作: if table.columns contains "user_id": where = "user_id=1" // dump rows where user_id=1 else: whe

我正在尝试使用“mysqldump”命令行工具为数据库创建一个mysql转储,我希望做一些独特的事情。本质上,如果表包含某一列,则根据这些约束进行转储,否则,转储整个表。但是由于mysqldump命令行选项的性质,这一切都必须在一个WHERE子句中

在psuedo代码中,我必须执行以下操作:

if table.columns contains "user_id":
    where = "user_id=1" // dump rows where user_id=1
else:
    where = "TRUE" // dump whole table
但在所有一个将应用于每个表的where子句中,mysqldump遇到了
mysqldump的
--where
选项可用于将表达式传递给每个表的SELECT,但它将相同的表达式传递给所有表

如果需要对不同的表子集使用不同的WHERE子句,则需要执行多个mysqldump命令,并针对不同的表集执行每个命令


请回复您的评论:

不,SQL查询中对列的引用必须在解析查询时固定,这意味着任何列引用都必须引用表中存在的列。无法在SQL中生成表达式,如果列确实存在,则使用列;如果列不存在,则忽略列引用

要执行您所描述的操作,您必须查询信息模式以查看表中存在哪些列,然后根据您发现的表中确实存在的列有条件地格式化转储的SQL查询

但是在mysqldump中,您没有机会这样做。它必须在mysqldump的代码中实现


请随意获取mysqldump的源代码,并为其添加您自己的逻辑。不过似乎有很多工作要做。

好吧,我明白了。我的问题是,有没有可能设计WHERE子句,使其适用于它遇到的任何表?确实如此。谢谢你,比尔!