postgresql ProgrammingError: идентификатор функции (неизвестно) не существует - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь использовать psycopg2.sql.SQL для составления моего запроса. Я ссылался на документы, но не могу заставить это выполнить. Я продолжаю получать вышеуказанную ошибку программирования

Вот пример кода:

import psycopg2.sql as sql

query = sql.SQL("SELECT id from {} where country={}".format(sql.Identifier('country_sector'), sql.Identifier('UK')))

cur = dbobj.conn.cursor()
cur.execute(query)
data = cur.fetchall()

А вот и ошибка:

ProgrammingError: function identifier(unknown) does not exist
LINE 1: SELECT id from Identifier('country_sector') where country=Id...
                       ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Это наводит меня на мысль, что мне нужно установить какое-то расширение в postgres, но поиск в Google не помог.

Любой совет высоко ценится.

1 Ответ

1 голос
/ 23 марта 2019

Вы используете format() неправильно. Это работает

import psycopg2
import psycopg2.sql as sql
conn=psycopg2.connect("dbname='mydb' user='myuser' ")
cur = conn.cursor()
cur.execute(
sql.SQL("SELECT id from {} 
        where country=%s").format(sql.Identifier('country_sector')),
['UK']
)
data = cur.fetchall()
...