2016-08-26 8 views
0

Ich bin neu bei psycopg2. Ich muss Daten in die Tabelle ohne Duplikate einfügen. Also habe ich zuerst eine temporäre Tabelle erstellt, in der ich alle Daten ausgegeben habe. Und dann überprüfe ich und füge die Daten zur tatsächlichen Tabelle hinzu. Hier ist der Code bis jetzt:Einfügen von Daten in die Tabelle psycopg2 ohne Duplikate

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. 

Wohin gehe ich falsch?

+0

Zeichenkette multilines bedeutet, dass Sie brauchen "" "xxx" "", aber der Code, den Sie hier posten "xxx" – giaosudau

+0

'WO NICHT EXISTIERT (SELECT" X "...' - >> 'WO NICHT EXISTIERT (SELECT 1 ... 'oder' WO NICHT EXISTIERT (SELECT * ... '' – joop

Antwort

1

Experimentieren Sie Abfrage mit dreifachen Anführungszeichen anstelle von einzelnen wie unten

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() 

Für mehr Informationen, bitte check here !!!

+1

Ja .. Richtig. Danke. Es hat funktioniert. – moorthy

Verwandte Themen