python - 在Python代码中调用参数

标签 python python-3.x

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

#!/usr/bin/python

import argparse
import psycopg2
import csv

parser = argparse.ArgumentParser(description='insert the project ID as an 
argument')
parser.add_argument('-p','--project_id', help='project_id to pull files from 
ERAPRO',required=True)
args = parser.parse_args()

conn = psycopg2.connect(database="XXX", user="XXX", password="XXX", 
host="XXX", port="5432")
cur = conn.cursor()

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 = <INSERT -p ARGUMENT HERE> and analysis.hidden_in_eva = '0';""")

records = cur.fetchall()

with open ('/nfs/production3/eva/user/gary/evapro_ftp/<INSERT -p ARGUMENT 
HERE>.csv', 'w') as f:
writer = csv.writer (f, delimiter = ',')
for row in records:
    writer.writerow(row)

conn.close()

感谢所有帮助。

谢谢

最佳答案

首先使用 add_argument()dest 参数将参数分配给变量。假设我们将输入分配给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 引用的值到字符串中。

关于python - 在Python代码中调用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237370/

相关文章:

python - 如何在没有系统特定的情况下获得 pathlib 的 unix 路径处理好东西,例如 Path.resolve() changes/tmp to/private/tmp

python - 以编程方式逐像素生成视频

python - 将图像转换为二进制文件后,无法在带有matplotlib的笔记本中显示图像

python - 获取今天日期的所有对象,django

python - Scrapy 选择具有特定属性名称的 HTML 元素

python-3.x - 如何将 Tensorflow 2.0 SavedModel 转换为 TensorRT?

python - 为什么当我使用多处理模块时我的程序无法运行

python - “模块”对象没有属性 'test one'

python-3.x - 图像和标签在 TFRecord 中不对应

python - 为什么 python 切片中允许使用非整数内置类型?