gpt4 book ai didi

python - 如何在psycopg2中执行非sql命令

转载 作者:行者123 更新时间:2023-11-29 12:40:26 25 4
gpt4 key购买 nike

如何执行像

这样的非sql命令
\connect
\dl
\dt
\du
\d+ table_name

...等等

在 psycopg2 中 ??

cur.execute("\dl")

当尝试用 cursor 做时,我得到错误

syntax error at or near "\"
LINE 1: \dl

最佳答案

这些非 sql 命令特定于 psql - PostgreSQL interactive terminal .你不能用 psycopg2 执行它们,但你可以从你的应用程序运行 psql。以下 Python 3.6 中的完整示例使用 subprocess:

import psycopg2
import sys
import subprocess

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))

输出:

                                  Table "public.my_table"
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)

关于python - 如何在psycopg2中执行非sql命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53077083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com