pg8000 не может параметризовать запросы - PullRequest
0 голосов
/ 26 сентября 2018

Я пытался использовать pg8000 для взаимодействия с моим сервером SQL, но по какой-то причине он не будет правильно принимать параметры.Кажется, он распознает стиль парам, а затем знает, как изменить их на параметры PostgreSQL, но, похоже, никогда не пропускает эти параметры.Я посмотрел пример документации здесь (ссылка) для примеров, и они не работали.Вот несколько примеров:

query = """
        SELECT *
        FROM schema.table_name
        """
conn = pg8000.connect(**credential_dict)
cursor = conn.cursor()
cursor.execute(query)

Этот пример работает.Следующие два не:

query = """
        SELECT *
        FROM %s
        """
conn = pg8000.connect(**credential_dict)
cursor = conn.cursor()
cursor.execute(query, 'schema.table_name')

query = """
        SELECT *
        FROM %s
        """
conn = pg8000.connect(**credential_dict)
cursor = conn.cursor()
cursor.execute(query, ('schema.table_name',))

Эти запросы не выполняются, но я получаю сообщение об ошибке, в котором говорится, что ошибка находится в $1, и pg8000 преобразует %s в

Что такоеЯ делаю не так?

1 Ответ

0 голосов
/ 26 сентября 2018

Попробуйте явно назвать свой параметр и передать его как dict:

param_dict = dict(table_name = 'schema.table_name')
query = """SELECT * FROM %(table_name)s"""
# cursor setup code...
cursor.execute(query, param_dict)
...