SQL 带有可选参数的查询 python

SQL query with optional parameters with python

当我使用参数 a、b、c 执行我的脚本时 python;

var1 = sys.arg[1]
var2 = sys.arg[2]
var3 = sys.arg[3]

cursor.execute("select * from table where  a= %s, b= %s, c= %s ", (var1, var2, var3))

但我也希望这些参数是可选的,我的意思是例如只插入一两个参数。 如果我输入两个参数,我的查询只考虑两个参数(a 和 c)。

请问我该怎么做,谢谢你的帮助

您可以使用 argparse 模块来确保“var1”与“a”列对齐,而“var3”与“c”列相关。

import argparse
parser = argparse.ArgumentParser()

# provide a clear definition of possible arguments
parser.add_argument('--a', type=str, required=False, default=None)
parser.add_argument('--b', type=str, required=False, default=None)
parser.add_argument('--c', type=str, required=False, default=None)

# get arguments passed in
args = parser.parse_args()

args = args.__dict__

# form statement based on arguments that were given
columns = ', '.join([x+'=%s' for x in args if args[x]])     #check that args[x] is not None

vars = tuple([args[x] for x in args if args[x]])

statement = "SELECT * FROM TABLE WHERE "+columns

cursor.execute(statement, vars)

这将形成声明:

'SELECT * FROM TABLE WHERE a=%s, c=%s'

您可以这样调用您的脚本:

script.py --a=var1 --c=var3