Python - psycopg2.sql - вызывающая функция - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь вызвать функцию подстроки в динамическом SQL.

from psycopg2 import sql as ps_sql

sql = ps_sql.SQL('select {}').format(ps_sql.Identifier("substring('TEST',1,2)"))
with db.conn_ogis.cursor() as cursor:
    cursor.execute(sql)

У меня ошибка: psycopg2.errors.UndefinedColumn: ERROR: столбец "substring ('TEST', 1,2)" неexixst

Как правильно вызвать функцию?

1 Ответ

0 голосов
/ 05 ноября 2019

Используйте функцию Identifier() только для идентификаторов Postgres (т.е. имен таблицы, столбца, представления, функции и т. Д.). Таким образом, вы можете использовать это следующим образом:

sql = ps_sql.SQL("select {}('TEST',1,2)").format(ps_sql.Identifier("substring"))

На самом деле, в данном конкретном случае идентификатор substring не нуждается в кавычках (потому что он в нижнем регистре):

sql = ps_sql.SQL("select substring('TEST',1,2)")
...