我有以下代码在调用时需要-p参数。但是,如何在SQL查询中调用-p参数?我也希望在输出文件名中使用这个-p参数文本。
columnmean
所有帮助表示赞赏。
由于
答案 0 :(得分:2)
首先使用dest
参数将参数分配给变量add_argument()
。假设我们将输入分配给project_id变量。
这样我们就可以在代码中引用它。
parser.add_argument('-p','--project_id',
help='project_id to pull files from
ERAPRO',
required=True,
dest='project_id') # notice the dest argument
cur.execute("""SELECT project_analysis.project_accession,
analysis.analysis_accession, file.filename, file.file_md5, file.file_location
FROM project_analysis
LEFT JOIN analysis on project_analysis.analysis_accession = analysis.analysis_accession
LEFT JOIN analysis_file on analysis.analysis_accession = analysis_file.analysis_accession
LEFT JOIN file on analysis_file.file_id = file.file_id
WHERE project_accession = %s and analysis.hidden_in_eva = '0';""", (args.project_id))
注意使用execute(' ... %s ...', (args.project_id))
,我们将project_id
引用的值插入到字符串中。
答案 1 :(得分:0)
调用args = parser.parse_args()
后,你可以获得这样的参数值:
pid = args.project_id
然后,您可以使用正常的字符串替换在代码中使用pid
的值。但是,最好使用psycopg2的内置方法将参数传递给SQL查询以防止SQL注入。
正常字符串替换:
'hello world {]'.format(var_name)
psycopg2:
cur.execute('SELECT * from %s', (var_name))