community.postgresql.postgresql_query модуль — Выполнение запросов к PostgreSQL
Примечание
Этот модуль входит в коллекцию community.postgresql (версия 3.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.postgresql. Для использования этого модуля необходимы дополнительные требования, см. Требования для получения подробной информации.
Чтобы использовать его в плейбуке, укажите: community.postgresql.postgresql_query.
Обзор
- Выполняет произвольные запросы к PostgreSQL.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2 >= 2.5.1
Параметры
Параметр | Комментарии |
|---|---|
autocommit boolean | Выполнить в режиме autocommit, когда запрос не может быть выполнен внутри блока транзакции (например, VACUUM). Взаимоисключающее с check_mode. Варианты:
|
ca_cert алиасы: ssl_rootcert строка | Указывает имя файла, содержащего сертификат(ы) центра сертификации (CA) SSL. Если файл существует, серверный сертификат будет проверен на подпись одним из этих центров. |
connect_params словарь добавлен в community.postgresql 2.3.0 | Дополнительные параметры, передаваемые в libpg. Эти параметры имеют приоритет. По умолчанию: |
db алиасы: login_db строка | Имя базы данных, к которой необходимо подключиться и выполнять запросы. |
encoding строка добавлен в community.postgresql 0.2.0 | Установить кодировку клиента для текущей сессии (например, По умолчанию используется кодировка, определенная базой данных. |
login_host алиасы: host строка | Хост, на котором работает база данных. Если у вас проблемы с подключением при использовании По умолчанию: |
login_password строка | Пароль, который этот модуль должен использовать для установления сессии PostgreSQL. По умолчанию: |
login_unix_socket алиасы: unix_socket строка | Путь к сокету Unix доменного имени для локальных подключений. По умолчанию: |
login_user алиасы: login строка | Имя пользователя, которое этот модуль должен использовать для установления сессии PostgreSQL. По умолчанию: |
named_args словарь | Словарь аргументов ключ-значение для передачи в запрос. Когда значение является списком, оно будет преобразовано в массив PostgreSQL. Взаимоисключающее с positional_args. |
port алиасы: login_port целое число | Порт базы данных для подключения. По умолчанию: |
positional_args список / элементы=любой | Список значений, которые будут переданы в запрос как позиционные аргументы. Когда значение является списком, оно будет преобразовано в массив PostgreSQL. Взаимоисключающее с named_args. |
query любой | Строка SQL-запроса или список запросов для выполнения. Переменные могут быть экранированы с помощью синтаксиса psycopg https://www.psycopg.org/psycopg3/docs/basic/params.html. |
search_path список / элементы=строка добавлен в community.postgresql 1.0.0 | Список имен схем для поиска. |
session_role строка | Переключиться на session_role после подключения. Указанная session_role должна быть ролью, членом которой является текущий login_user. Проверка разрешений для команд SQL выполняется так, как будто session_role была той, которая первоначально вошла в систему. |
ssl_cert путь добавлен в community.postgresql 2.4.0 | Указывает имя файла клиентского SSL-сертификата. |
ssl_key путь добавлен в community.postgresql 2.4.0 | Указывает расположение секретного ключа, используемого для клиентского сертификата. |
ssl_mode строка | Определяет, будет ли установлено защищенное соединение SSL TCP/IP с сервером и с каким приоритетом. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию Варианты:
|
trust_input булево добавлено в community.postgresql 0.2.0 | Если Использование Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: полная | Может работать в режиме check_mode и возвращать прогноз изменения состояния без изменения целевого объекта. |
Примечания
Примечание
- По умолчанию используется аутентификация, предполагающая, что вы логинитесь как или используете sudo для учетной записи
postgresна хосте. - Чтобы избежать ошибки «Ошибка проверки подлинности узла для пользователя postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует
psycopg, адаптер базы данных Python PostgreSQL. Вы должны убедиться, чтоpsycopg2 >= 2.5.1илиpsycopg3 >= 3.1.8установлены на хосте перед использованием этого модуля. - Если удаленный хост является сервером PostgreSQL (что является стандартным случаем), то PostgreSQL также должен быть установлен на удаленном хосте.
- Для систем на основе Ubuntu установите пакеты
postgresql,libpq-devиpython3-psycopg2на удаленном хосте перед использованием этого модуля.
См. также
См. также
- community.postgresql.postgresql_script
-
Выполнение PostgreSQL-команд из файла.
- community.postgresql.postgresql_db
-
Добавление или удаление баз данных PostgreSQL на удаленном хосте.
- Ссылка на схему PostgreSQL
-
Полное справочное руководство по документации схемы PostgreSQL.
Примеры
- name: Simple select query to acme db
community.postgresql.postgresql_query:
db: acme
query: SELECT version()
# The result of each query will be stored in query_all_results return value
- name: Run several queries against acme db
community.postgresql.postgresql_query:
db: acme
query:
- SELECT version()
- SELECT id FROM accounts
- name: Select query to db acme with positional arguments and non-default credentials
community.postgresql.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
community.postgresql.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
community.postgresql.postgresql_query:
db: test_db
query: INSERT INTO test_table (id, story) VALUES (2, 'my_long_story')
- name: Use connect_params to add any additional connection parameters that libpg supports
community.postgresql.postgresql_query:
connect_params:
target_session_attrs: read-write
connect_timeout: 10
login_host: "host1,host2"
login_user: "test"
login_password: "test1234"
db: 'test'
query: 'insert into test (test) values (now())'
- name: Example of using autocommit parameter
community.postgresql.postgresql_query:
db: test_db
query: VACUUM
autocommit: true
- 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.
community.postgresql.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
ansible.builtin.set_fact:
my_list:
- 1
- 2
- 3
my_arr: '{1, 2, 3}'
- name: Select from test table by passing positional_args as arrays
community.postgresql.postgresql_query:
query: SELECT * FROM test_array_table WHERE arr_col1 = %s AND arr_col2 = %s
positional_args:
- '{{ my_list }}'
- '{{ my_arr|string }}'
# Select from test table looking into app1 schema first, then,
# if the schema doesn't exist or the table hasn't been found there,
# try to find it in the schema public
- name: Select from test using search_path
community.postgresql.postgresql_query:
query: SELECT * FROM test_array_table
search_path:
- app1
- public
# If you use a variable in positional_args / named_args that can
# be undefined and you wish to set it as NULL, the constructions like
# "{{ my_var if (my_var is defined) else none | default(none) }}"
# will not work as expected substituting an empty string instead of NULL.
# If possible, we suggest to use Ansible's DEFAULT_JINJA2_NATIVE configuration
# (https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-jinja2-native).
# Enabling it fixes this problem. If you cannot enable it, the following workaround
# can be used.
# You should precheck such a value and define it as NULL when undefined.
# For example:
- name: When undefined, set to NULL
set_fact:
my_var: NULL
when: my_var is undefined
# Then:
- name: Insert a value using positional arguments
community.postgresql.postgresql_query:
query: INSERT INTO test_table (col1) VALUES (%s)
positional_args:
- '{{ my_var }}'
Значения возврата
Общие значения возврата документированы здесь, следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
query строка | Выполненная команда. При чтении нескольких команд из файла содержит только последнюю. Возвращается: успех Пример: |
query_all_results список / элементы=список | Список, содержащий результаты всех выполненных команд (один подсписок для каждой команды). Возвращается: успех Пример: |
query_list список / элементы=строка | Список выполненных команд. Возвращается: успех Пример: |
query_result список / элементы=словарь | Список словарей в формате столбец:значение, представляющих возвращенные строки. При выполнении команд из файла возвращает результат последней команды. Возвращается: успех Пример: |
rowcount целое число | Количество полученных или затронутых строк. При использовании скрипта с несколькими командами содержит общее количество полученных или затронутых строк. Возвращается: изменено Пример: |
statusmessage строка | Атрибут, содержащий сообщение, возвращенное командой. При чтении нескольких команд из файла содержит сообщение последней. Возвращается: успех Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/postgresql/postgresql_query_module.html