我正在尝试编写一个 python 脚本来自动化使用最新的生产转储创建数据库的任务。我为此目的使用了psychopg2。
但是在创建新数据库后,我想删除以前使用的数据库。我的想法是,如果我可以在列表中获取数据库的名称并对它们进行排序,我可以轻松删除不需要的数据库。
所以,我的问题是:如何在列表中获取数据库的名称。
谢谢
我正在尝试编写一个 python 脚本来自动化使用最新的生产转储创建数据库的任务。我为此目的使用了psychopg2。
但是在创建新数据库后,我想删除以前使用的数据库。我的想法是,如果我可以在列表中获取数据库的名称并对它们进行排序,我可以轻松删除不需要的数据库。
所以,我的问题是:如何在列表中获取数据库的名称。
谢谢
您可以列出所有数据库
SELECT d.datname as "Name",
FROM pg_catalog.pg_database d
ORDER BY 1;
您可以按自己喜欢的方式过滤或订购它。
psql -E -U postgres -c "\l"
上面命令的输出是这样的
********* QUERY **********
SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
d.datcollate as "Collate",
d.datctype as "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
**************************
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------+----------+----------+---------+-------+-----------------------
mickey | postgres | UTF8 | C | C |
mickeylite | postgres | UTF8 | C | C |
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)