使用Python和psycopg的SQL语法错误

时间:2009-11-22 13:59:24

标签: python sql sql-injection

如何修复此SQL代码?

我的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'])

我明白了:

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')
                             ^

2 个答案:

答案 0 :(得分:2)

您在同一查询中犯了3个不同的错误:

  1. 不应引用字段名称。
  2. psycopg2使用元组,而不是参数列表。
  3. 不支持“:1”之类的位置参数。
  4. 将您的查询更改为:

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

答案 1 :(得分:1)

删除字段名称周围的引号:

INSERT INTO courses (course_nro)