2017-06-11 2 views
0

Ich arbeite an einem Scraping-Projekt und ich kämpfe mit dem Einfügen von Daten in die Datenbank.Python-Liste in PostgreSQL-Datenbank einfügen

Meine Datenbank hat drei Spalten: ID, Post und Autor Scraped Daten werden in zwei Listen gespeichert. Der erste ist Listen Posts und der zweite ist Autoren. Beide sind immer gleich lang, weil es keine Artikel ohne Inhalt oder Artikel ohne Autor gibt.

Ich habe versucht Lösung in this Frage zur Verfügung gestellt, aber ich habe diesen Fehler:

Traceback (most recent call last): 
File "scrape.py", line 69, in <module> 
cur.execute("INSERT into posts(id, post, author) VALUES (%s, %s, %s)", authors) 
TypeError: not all arguments converted during string formatting 

Meine Listen wie folgt aussehen:

author = [n1, n2, n3 ... n45] 
posts = [n1, n2, n3 ... n45] 

Und ich möchte sie in die Datenbank eingefügt werden wie folgt :

ID | Post | Author 
---|------|-------- 
1 | Text | Author 
2 | Text | Author 

Später müsste ich Statistiken aus Werten in p extrahieren ost Spalte. Um genau zu sein, wie oft und wie oft sie erscheinen, denke ich, dass es sich für eine andere Frage eignet.

+0

Sie haben 45 Werte in Ihrer Liste und nur 3 Zeichenfolgen zu formatieren –

+0

@ cricket_007 also ich denke, ich habe Fehler gemacht, ich sollte die Daten schaben, wenn ich es schreibe Zeile für Zeile, bin Ich richtig? – Zubru

Antwort

1

Sie haben versucht, eine Liste von Autoren in eine Tabelle von Beiträgen einzufügen? Das macht keinen Sinn.

Sie suchen sicherlich für so etwas wie dieses

data = [(1, 'post', 'author'), (2, 'post', 'author')] 
for d in data: 
    cur.execute("INSERT into posts(id, post, author) VALUES (%s, %s, %s)", d) 

Auch sind id Werte ganze Zahlen der Regel, aber Sie scheinen die Formatierung als String

zu werden Wenn Sie einzelne Listen behalten möchten, Check-out Das Ergebnis von zip(posts, authors)

+0

Danke! Du hast meinen Tag gerettet! Ich habe mich so angestrengt, dass ich nicht gedacht habe, dass ich in meinem Code einen Fehler gemacht habe. – Zubru