2016-07-24 9 views
0

Ich versuche, Daten in die Datenbank (Verwendung psycopg2.connect) hinzuzufügen:Typeerror: nicht alle während Zeichenfolge Formatierung Postgres umgewandelt Argumente

cand = Candidate('test', datetime.now(), '[email protected]', '123123', "21", 'test', 'test', 'test', datetime.now(), "1", "1", 'test', 'M', "18", "2", "2") 
db.addCandidate(cand) 

meine Funktion add:

def addCandidate(self, candidate): 
    with self.connection.cursor() as cursor: 
     cursor.execute("""INSERT INTO candidate (name, pub_date, email, tel, age, proff, href, city, last_update, called_count, status, comment, sex, recrut_id, vacancy_id, level) 
       VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (candidate.name, candidate.pub_date, candidate.email, candidate.tel, 
          candidate.age, candidate.proff, candidate.href, candidate.city, candidate.last_update, candidate.called_count, candidate.status, candidate.comment, candidate.sex, candidate.recrut_id, 
          candidate.vacancy_id, candidate.level)) 
     self.connection.commit() 

versucht, Daten in Einwickeln str, aber nichts hat sich geändert. in pymysql.connect Arbeit fein

+0

Welche Rahmen oder Bibliothek benutzen Sie, um sich mit der PostgreSQL DB zu verbinden? Erhalten Sie Fehlermeldungen oder Warnungen? Was meinst du mit "nichts hat sich verändert"? Wurde der DB-Inhalt unverändert beibehalten? Bitte versuchen Sie eine [mcve] bereitzustellen. –

+0

mysql und postgres verhalten sich nicht identisch. Vielleicht ist einer Ihrer Werte keine Zeichenfolge? Drucken Sie das Ergebnis Ihrer SQL-Anweisung aus, bevor Sie es ausführen. –

+2

Müssen Sie die datetime() Ergebnisse angeben? –

Antwort

0

ich mein Problem gelöst, schrieb ich 15 '% s', statt 16

0

Ich kann nicht sicher sagen, weil ich nicht die Arten Ihrer Spalten kenne, aber es ist plausibel, dass Ihr Datetime-Objekt nicht das richtige Format hat. Sie senden das Datetime-Objekt nicht als Zeichenfolge im richtigen Datumsformat. Versuchen:

candidate.pub_date.isoformat() 

oder

candidate.pub_date.strftime("<proper_format">) 

Siehe http://strftime.org/ für Formatoptionen. Das könnte für dich funktionieren.

+0

Vielen Dank, ich habe versucht, ich habe sogar versucht, vollständig Datum in meiner Aussage zu entfernen, aber ich bekomme das gleiche Error – Vladimir

0

In statt executemogrify tun, was zu überprüfen, genau an den Server gesendet wird:

print cursor.mogrify (""" 
    INSERT INTO candidate ( 
     name, pub_date, email, tel, age, proff, href, city, 
     last_update, called_count, status, comment, 
     sex, recrut_id, vacancy_id, level 
    ) VALUES (
     %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s 
    )""", (
     candidate.name, candidate.pub_date, candidate.email, 
     candidate.tel, candidate.age, candidate.proff, candidate.href, 
     candidate.city, candidate.last_update, candidate.called_count, 
     candidate.status, candidate.comment, candidate.sex, 
     candidate.recrut_id, candidate.vacancy_id, candidate.level 
    ) 
) 
Verwandte Themen