读取CSV以使用Python将数据插入Postgres SQL

读取CSV以使用Python将数据插入Postgres SQL,python,postgresql,csv,psycopg2,Python,Postgresql,Csv,Psycopg2,我想读取一个csv文件,用Python将数据插入postgres SQL 但我有以下错误: cursor.execute(passdata) psycopg2.IntegrityError: duplicate key value violates unique constraint "prk_constraint_project" DETAIL: Key (project_code)=(%s) already exists. 我的代码是: clinicalCSVINSERT

我想读取一个csv文件,用Python将数据插入postgres SQL 但我有以下错误:

  cursor.execute(passdata)
  psycopg2.IntegrityError: duplicate key value violates unique constraint "prk_constraint_project"
  DETAIL:  Key (project_code)=(%s) already exists.
我的代码是:

  clinicalCSVINSERT = open(clinicalname, 'r')
  reader = csv.reader(clinicalCSVINSERT, delimiter='\t')
  passdata = "INSERT INTO project (project_code, program_name ) VALUES ('%s', '%s')";
  cursor.execute(passdata)
  conn.commit()` 
这个错误意味着什么?
是否可能有一个工作脚本?

代码的直接问题是您试图包含文本
%s
。由于您可能多次运行它,因此在该唯一列中已经有一个文本
%s
,因此出现了异常

有必要将包装在iterable中的值作为参数传递给
execute
方法。
%s
只是一个值占位符

passdata = """
    INSERT INTO project (project_code, program_name ) 
    VALUES (%s, %s)
"""
cursor.execute(passdata, (the_project_code, the_program_name))
不要引用
%s
。如有必要,Psycopg将这样做


由于您的代码不包含循环,因此它将仅从csv中插入一行。有一些模式可以插入整个文件。如果要求允许只使用更简单、更快的代码。

代码的直接问题是您试图包含文本
%s
。由于您可能多次运行它,因此在该唯一列中已经有一个文本
%s
,因此出现了异常

有必要将包装在iterable中的值作为参数传递给
execute
方法。
%s
只是一个值占位符

passdata = """
    INSERT INTO project (project_code, program_name ) 
    VALUES (%s, %s)
"""
cursor.execute(passdata, (the_project_code, the_program_name))
不要引用
%s
。如有必要,Psycopg将这样做


由于您的代码不包含循环,因此它将仅从csv中插入一行。有一些模式可以插入整个文件。如果要求允许,只需使用更简单、更快的文件。

My CSV包含以下数据:`文件uuid 1B3DB121-B766-486D-AB7D-65AB646CE5AC批次号304.63.0项目代码TCGA疾病代码ACC日期上传312016年dcc上传月份3年(数据为单独数值)`我的CSV包含这样的数据:`文件uid 1B3DB121-B766-486D-AB7D-65AB646CE5AC批次号304.63.0项目_代码TCGA疾病_代码ACC日期_dcc上传31个月_dcc上传32016年dcc上传年份(数据为选项卡独立值)`感谢您的快速回答,我的CSV有两列;第一列包含多个数据,包括项目代码和项目名称,第二列包含与第一列对应的数据谢谢您的快速回答,我的CSV有两列;第一列包含多个数据,包括项目代码和程序名称,第二列包含与第一列对应的数据