使用 .format() 时出现 psycopg2 编程错误
psycopg2 Programming Error when using .format()
我不确定这里到底发生了什么,但它可能与 python 中的格式有关。
运行 这会导致错误。
x = '00000201000012EB'
sql = """ SELECT * FROM table WHERE id = {} """.format(x)
conn.execute(sql)
我收到一条错误消息:"EB"
附近出现语法错误
然而当我运行这样的命令时:
sql = """ SELECT * FROM table WHERE id = '00000201000012EB' """
conn.execute(sql)
它工作正常。
我格式化此 sql 语句的方式有问题吗?
信不信由你,通过在字符串中添加更多引号解决了这个问题。
终于成功了。
x = '00000201000012EB'
sql = """ SELECT * FROM table WHERE id = {} """.format("'" + x + "'")
由于 sql 语句需要另一组引号,我只是添加了它们以确保它被视为自己的字符串。
使用变量作为参数 execute()
:
cur.execute(""" SELECT * FROM my_table WHERE id = %s """, (x,))
如果您确定要使用format()
,您应该在占位符两边加上单引号:
sql = """ SELECT * FROM my_table WHERE id = '{}' """.format(x)
我不确定这里到底发生了什么,但它可能与 python 中的格式有关。 运行 这会导致错误。
x = '00000201000012EB'
sql = """ SELECT * FROM table WHERE id = {} """.format(x)
conn.execute(sql)
我收到一条错误消息:"EB"
附近出现语法错误然而当我运行这样的命令时:
sql = """ SELECT * FROM table WHERE id = '00000201000012EB' """
conn.execute(sql)
它工作正常。
我格式化此 sql 语句的方式有问题吗?
信不信由你,通过在字符串中添加更多引号解决了这个问题。
终于成功了。
x = '00000201000012EB'
sql = """ SELECT * FROM table WHERE id = {} """.format("'" + x + "'")
由于 sql 语句需要另一组引号,我只是添加了它们以确保它被视为自己的字符串。
使用变量作为参数 execute()
:
cur.execute(""" SELECT * FROM my_table WHERE id = %s """, (x,))
如果您确定要使用format()
,您应该在占位符两边加上单引号:
sql = """ SELECT * FROM my_table WHERE id = '{}' """.format(x)