Python Pyscopg:如何使用LIMIT / OFFSET和WHERE的占位符?

我目前正在尝试在
Python的psycopg模块中的PostgreSQL查询中使用占位符.这是我正在使用的代码示例.

table.execute('SELECT * FROM table WHERE col2 = %s ORDER BY pID ASC LIMIT %s OFFSET %s;',(val1,val2,val3))

我在某处读过,对于LIMIT和OFFSET,不可能使用这样的占位符,但我应该使用WHERE =的占位符格式.

safely specifying ‘order by’ clause from user input in python / postgresql / psycopg2

有没有人知道这个SQL查询的正确占位符语法?谢谢!

最佳答案 限制和偏移都可以与占位符一起使用而没有任何问题.

一般来说,只要表达式中允许“值”,就可以使用占位符.

cur.execute(“select * from node其中node_name =%s limit%s offset%s”,(‘test’,5,5))

工作得很好.

正如在引用的文章中已经指出的那样,您不能使用占位符来引用它们中的任何表,列,模式或别名.在这些情况下,您通常需要在调用execute之前执行自己的变量替换.

点赞