postgresql_query – Выполнение запросов к PostgreSQL
Новое в версии 2.8.
Описание
- Выполняет произвольные запросы к PostgreSQL.
- Может выполнять запросы из файлов скриптов SQL.
- Не выполняет запросы к файлам резервных копий. Используйте postgresql_db с state=restore для выполнения запросов к файлам, созданным утилитами pg_dump/pg_dumpall.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка | Указывает имя файла, содержащего сертификаты авторитета SSL (CA). Если файл существует, серверный сертификат будет проверен на подпись одним из этих авторитетов. Псевдонимы: ssl_rootcert | |
| db строка | Имя базы данных для подключения и выполнения запросов. Псевдонимы: login_db | |
| login_host строка | Хост, на котором работает база данных. | |
| login_password строка | Пароль для аутентификации. | |
| login_unix_socket строка | Путь к сокету Unix-домена для локальных соединений. | |
| login_user строка | По умолчанию: "postgres" | Имя пользователя для аутентификации. |
| named_args словарь | Словарь пар ключ-значение для передачи в запрос. Взаимоисключающий параметр с positional_args. | |
| path_to_script путь | Путь к скрипту SQL на удалённом хосте. Возвращает результат последнего запроса в скрипте. Взаимоисключающий параметр с query. | |
| port целое число | По умолчанию: 5432 | Порт базы данных для подключения. Псевдонимы: login_port |
| positional_args список | Список значений для передачи в запрос в качестве позиционных аргументов. Взаимоисключающий параметр с named_args. | |
| query строка | SQL запрос для выполнения. Переменные можно экранировать с использованием синтаксиса psycopg2 http://initd.org/psycopg/docs/usage.html. | |
| session_role строка | Переключение на session_role после подключения. Указанный session_role должен быть ролью, членом которой является текущий login_user. Проверка разрешений для SQL-команд выполняется так, как будто session_role был тем, кто первоначально вошёл в систему. | |
| ssl_mode строка |
| Определяет, будет ли и с какой приоритетностью устанавливаться безопасное соединение SSL TCP/IP с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
Примечания
Примечание
- Аутентификация по умолчанию предполагает, что вы либо входите в систему как пользователь postgres, либо используете sudo для входа в систему как пользователь postgres на хосте.
- Чтобы избежать ошибки «Ошибка проверки подлинности клиента для пользователя postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует psycopg2, адаптер Python для базы данных PostgreSQL. Вы должны убедиться, что psycopg2 установлен на хосте перед использованием этого модуля. Если удалённый хост является сервером PostgreSQL (что является случаем по умолчанию), то PostgreSQL также должен быть установлен на удалённом хосте. Для систем на базе Ubuntu установите пакеты postgresql, libpq-dev и python-psycopg2 на удалённом хосте перед использованием этого модуля.
- Аутентификация по умолчанию предполагает, что вы либо входите в систему как пользователь, либо используете sudo для входа в систему как пользователь
postgresна хосте. - Этот модуль использует psycopg2, адаптер Python для базы данных PostgreSQL. Вы должны убедиться, что psycopg2 установлен на хосте перед использованием этого модуля. Если удалённый хост является сервером PostgreSQL (что является случаем по умолчанию), то PostgreSQL также должен быть установлен на удалённом хосте. Для систем на базе Ubuntu установите пакеты
postgresql,libpq-dev, иpython-psycopg2на удалённом хосте перед использованием этого модуля. - Параметр ca_cert требует как минимум версии Postgres 8.4 и psycopg2 версии 2.4.3.
См. также
См. также
- postgresql_db – Добавление или удаление баз данных PostgreSQL с удаленного хоста
- Официальная документация по модулю postgresql_db.
Примеры
- name: Simple select query to acme db
postgresql_query:
db: acme
query: SELECT version()
- name: Select query to db acme with positional arguments and non-default credentials
postgresql_query:
db: acme
login_user: django
login_password: mysecretpass
query: SELECT * FROM acme WHERE id = %s AND story = %s
positional_args:
- 1
- test
- name: Select query to test_db with named_args
postgresql_query:
db: test_db
query: SELECT * FROM test WHERE id = %(id_val)s AND story = %(story_val)s
named_args:
id_val: 1
story_val: test
- name: Insert query to db test_db
postgresql_query:
db: test_db
query: INSERT INTO test_db (id, story) VALUES (2, 'my_long_story')
- name: Run queries from SQL script
postgresql_query:
db: test_db
path_to_script: /var/lib/pgsql/test.sql
positional_args:
- 1
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие являются полями, уникальными для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| query строка | всегда | Запрос, который пытались выполнить. Пример: SELECT * FROM bar |
| query_result список | изменено | Список словарей в формате столбец:значение, представляющий возвращённые строки. Пример: [{'Столбец': 'Значение1'}, {'Столбец': 'Значение2'}] |
| rowcount целое число | изменено | Количество затронутых строк. Пример: 5 |
| statusmessage строка | всегда | Атрибут, содержащий сообщение, возвращённое командой. Пример: INSERT 0 1 |
Статус
- Данный модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Felix Archambault (@archf)
- Andrew Klychkov (@Andersson007)
- Will Rouesnel (@wrouesnel)
Подсказка
Если вы заметите какие-либо проблемы в этой документации, вы можете изменить этот документ для его улучшения.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/postgresql_query_module.html