Как использовать слэши в коммандах psycopg2?

Суть: Нужно поработать скриптом над выводом Postgres после выполнения команды \dRs. Через psql команда выполняется, вывод нормальный. А вот когда хочу через psycopg2 то же самое повторить, то не получается:

Input:

cursor.execute('\dRs')

Output:

psycopg2.errors.SyntaxError: syntax error at or near "\"

P.S. r"\dRs", так же не работает...


Ответы (1 шт):

Автор решения: gil9red

Если вам нужно из скрипта выполнять интерактивную команду, нужно будет запустить программу для базы (psql) и ввести в нее команду \dRs, после считать результат

Пример взят из ответа с enSO:

import sys
import subprocess

import psycopg2

conn = psycopg2.connect(host='localhost', dbname='test', user='postgres')
conn.autocommit = True

cur = conn.cursor()
cur.execute('create table my_table(id int primary key, str text)')

res = subprocess.run('psql -c "\d+ my_table" test postgres', stdout=subprocess.PIPE)
print(res.stdout.decode(sys.stdout.encoding))

Результат:

 Column |  Type   | Collation | Nullable | Default | Storage  | Stats target | Description 
--------+---------+-----------+----------+---------+----------+--------------+-------------
 id     | integer |           | not null |         | plain    |              | 
 str    | text    |           |          |         | extended |              | 
Indexes:
    "my_table_pkey" PRIMARY KEY, btree (id)
→ Ссылка