将数据插入表psycopg2,没有重复项

时间:2016-08-26 10:40:32

标签: python psycopg2

我是psycopg2的新手。我必须将数据插入表中而不重复。所以,首先我创建了一个临时表,我在其中转储了所有数据。然后,我检查并将数据添加到实际表中。 这是现在的代码:

for eachline in content:
       pmid ,first_name, last_name,initial,article_title,journal,language = eachline.split("\t")
       cur.execute ("INSERT INTO AUTHOR_PMID(pmid, Author_lastname, Author_firstname, Author_initial,Article_title)
                           SELECT DISTINCT (pmid, Author_lastname, Author_firstname, Author_initial,Article_title) 
                                 FROM AUTHOR_PMID WHERE NOT EXISTS (SELECT "X" FROM AUTHOR_pmid_temp 
                                     WHERE 
                                        AUTHOR_pmid_temp.pmid = AUTHOR_PMID.pmid
                                        AND AUTHOR_pmid_temp.Author_lastname = AUTHOR_PMID.Author_lastname 
                                        AND AUTHOR_pmid_temp.Author_firstname = AUTHOR_PMID.Author_firstname 
                                        AND AUTHOR_pmid_temp.Author_initial = AUTHOR_PMID.Author_initial 
                                        AND AUTHOR_pmid_temp.Article_title = AUTHOR_PMID.Article_title);")
   con.commit()


error: syntax error.

我哪里错了?

1 个答案:

答案 0 :(得分:1)

尝试使用三引号插入查询,而不是像下面那样插入

for eachline in content:
       pmid ,first_name, last_name,initial,article_title,journal,language = eachline.split("\t")
       cur.execute ("""INSERT INTO AUTHOR_PMID(pmid, Author_lastname, Author_firstname, Author_initial,Article_title)
                           SELECT DISTINCT (pmid, Author_lastname, Author_firstname, Author_initial,Article_title) 
                                 FROM AUTHOR_PMID WHERE NOT EXISTS (SELECT "X" FROM AUTHOR_pmid_temp 
                                     WHERE 
                                        AUTHOR_pmid_temp.pmid = AUTHOR_PMID.pmid
                                        AND AUTHOR_pmid_temp.Author_lastname = AUTHOR_PMID.Author_lastname 
                                        AND AUTHOR_pmid_temp.Author_firstname = AUTHOR_PMID.Author_firstname 
                                        AND AUTHOR_pmid_temp.Author_initial = AUTHOR_PMID.Author_initial 
                                        AND AUTHOR_pmid_temp.Article_title = AUTHOR_PMID.Article_title);""")
   con.commit()

欲了解更多信息,请check here !!!