如何在python中获取Postgresql中的数据库列表

时间:2014-06-22 06:40:27

标签: python linux postgresql

我想获取python列表中Postgresql服务器中所有数据库的列表。 基本上,然后我想创建那些insode另一个数据库 但我无法得到它。

这就是我试过的

config_read = {
          'host':'psql-002',
          'database':'tesdb',
          'user':'pguser',
          'port':'5432',
          'password':'mypass'
          }


class ExportPSQL():

    def __init__(self):
        try:
            conn = psycopg2.connect(**config_read) 
            self.conn = conn
        except:
            print "Eror Connecting database"  

    def run(self):
    # Get a list of databases with :
        db_command=" psql -h localhost -U pguser tesdb -c '\l'"
        db_list = os.popen(db_command)

2 个答案:

答案 0 :(得分:1)

使用pg_dumpallpsql作为超级用户

完成所有操作
pg_dumpall -h localhost -U postgres -f pg_dumpall.sql

如果您只想复制架构,请使用--schema-only参数。

将其还原到另一个群集

psql -f pg_dumpall.sql postgres

答案 1 :(得分:0)

您的解决方案中缺少的是阅读和解析您从psql获得的信息:

def get_database_info(host, user):
    records, _ = subprocess.Popen(['psql','-lA','-F\x02','-R\x01','-h',host,'-U',user ],stdout=subprocess.PIPE).communicate()
    records = records.split('\x01')
    header = records[1].split('\x02')
    return [dict(zip(header,line.split('\x02'))) for line in records[2:-1]]