【问题标题】:SQL syntax error using Python and psycopg使用 Python 和 psycopg 的 SQL 语法错误
【发布时间】:2009-11-22 13:59:24
【问题描述】:

如何修复此 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')
                             ^

【问题讨论】:

  • 你试过不带引号吗?
  • 你认为^ 指的是什么?呵呵

标签: python sql sql-injection


【解决方案1】:

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

  1. 不应引用字段名称。
  2. psycopg2 使用元组,而不是列表作为参数。
  3. 不支持像“:1”这样的位置参数。

将您的查询更改为:

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

【讨论】:

    【解决方案2】:

    删除字段名周围的引号:

    INSERT INTO courses (course_nro)
    

    【讨论】:

    • 你还需要去掉:1参数周围的反引号。
    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2017-11-29
    • 1970-01-01
    • 2021-09-19
    • 2013-05-30
    相关资源
    最近更新 更多