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
当我使用参数 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