postgresql_query – Выполнение запросов к PostgreSQL
В версии 2.8.
Обзор
- Выполняет произвольные запросы к PostgreSQL.
- Может выполнять запросы из файлов сценариев SQL.
- Не выполняет запросы к файлам резервных копий. Используйте postgresql_db с state=restore для выполнения запросов к файлам, созданным утилитами pg_dump/pg_dumpall.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| autocommit boolean добавлено в 2.9 |
| Выполнять в режиме автосвершения, когда запрос не может быть выполнен внутри блока транзакции (например, VACUUM). Взаимоисключающий с check_mode. |
| ca_cert строка | Указывает имя файла, содержащего сертификат(ы) центра сертификации (CA). Если файл существует, сертификат сервера будет проверен на подпись одним из этих центров. псевдонимы: ssl_rootcert | |
| db строка | Имя базы данных, к которой нужно подключиться и к которой нужно выполнить запросы. псевдонимы: login_db | |
| login_host строка | Хост, на котором работает база данных. | |
| login_password строка | Пароль, используемый для аутентификации. | |
| login_unix_socket строка | Путь к сокету Unix-домена для локальных соединений. | |
| login_user строка | По умолчанию: "postgres" | Имя пользователя, используемое для аутентификации. |
| named_args словарь | Словарь аргументов ключ-значение для передачи запросу. Когда значение является списком, оно преобразуется в массив PostgreSQL. Взаимоисключающий с positional_args. | |
| path_to_script путь | Путь к файлу сценария SQL на удаленном хосте. Возвращает результат последнего запроса в сценарии. Взаимоисключающий с query. | |
| port целое число | По умолчанию: 5432 | Порт базы данных для подключения. псевдонимы: login_port |
| positional_args список | Список значений, которые будут переданы в качестве позиционных аргументов запросу. Когда значение является списком, оно преобразуется в массив PostgreSQL. Взаимоисключающий с 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. |
Примечания
Примечание
- По умолчанию аутентификация предполагает, что вы вошли в систему или используете sudo в качестве пользователя
postgresна хосте. - Чтобы избежать ошибки «Ошибка аутентификации клиента для пользователя postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует 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 test_table in db test_db
postgresql_query:
db: test_db
query: INSERT INTO test_table (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
- name: Example of using autocommit parameter
postgresql_query:
db: test_db
query: VACUUM
autocommit: yes
- name: >
Insert data to the column of array type using positional_args.
Note that we use quotes here, the same as for passing JSON, etc.
postgresql_query:
query: INSERT INTO test_table (array_column) VALUES (%s)
positional_args:
- '{1,2,3}'
# Pass list and string vars as positional_args
- name: Set vars
set_fact:
my_list:
- 1
- 2
- 3
my_arr: '{1, 2, 3}'
- name: Select from test table by passing positional_args as arrays
postgresql_query:
query: SELECT * FROM test_array_table WHERE arr_col1 = %s AND arr_col2 = %s
positional_args:
- '{{ my_list }}'
- '{{ my_arr|string }}'
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| query строка | всегда | Запрос, который пытались выполнить. Пример: SELECT * FROM bar |
| query_result список | изменено | Список словарей в формате столбец:значение, представляющий возвращенные строки. Пример: [{'Столбец': 'Значение1'}, {'Столбец': 'Значение2'}] |
| rowcount целое число | изменено | Количество затронутых строк. Пример: 5 |
| statusmessage строка | всегда | Атрибут, содержащий сообщение, возвращенное командой. Пример: INSERT 0 1 |
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- 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.9/modules/postgresql_query_module.html