在Python代码中调用参数

时间:2017-04-05 17:01:11

标签: python python-3.x

我有以下代码在调用时需要-p参数。但是,如何在SQL查询中调用-p参数?我也希望在输出文件名中使用这个-p参数文本。

columnmean

所有帮助表示赞赏。

由于

2 个答案:

答案 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))