2009-11-22 10 views
0

Comment pouvez-vous corriger ce code SQL?Erreur de syntaxe SQL à l'aide de Python et de psycopg

Mon code Python:

import os, pg, sys, re, psycopg2            

conn = psycopg2.connect("dbname=tk user=masi password=123") 
cur = conn.cursor() 
cur.execute("""INSERT INTO courses ('course_nro') 
    VALUES (`:1`)""", ['hen']) 

Je reçois:

Traceback (most recent call last):            
    File "<stdin>", line 13, in <module> 
psycopg2.ProgrammingError: syntax error at or near "'course_nro'" 
LINE 1: INSERT INTO courses ('course_nro') 
          ^
+0

avez-vous essayé avec sans les guillemets? – YOU

+2

À votre avis, à quoi sert le '^'? hehe – Andomar

Répondre

1

Retirez les guillemets autour du nom de champ:

INSERT INTO courses (course_nro) 
+0

Vous devez également supprimer les guillemets autour du paramètre ': 1'. – bobince

2

Vous avez fait 3 erreurs différentes dans la même requête:

  1. Les noms de champs ne doivent pas être cités.
  2. psycopg2 utilise des tuples, pas des listes pour les arguments.
  3. Les arguments de position tels que ": 1" ne sont pas pris en charge.

Changer votre requête dans:

cur.execute("""INSERT INTO courses (course_nro) VALUES (%s)""", ('hen',))