pg_在python中转储密码

pg_在python中转储密码,python,postgresql,pg-dump,Python,Postgresql,Pg Dump,我有一个ubuntu远程服务器,比如172.123.342.12。我想通过python脚本在本地机器上备份postgresql数据库 我的剧本是: def backUp(self): Pass = 'fb2024d4' os.putenv("PGPASSWORD",Pass) dt = datetime.now() format = "%Y_%b_%d" cur_time = dt.now() for

我有一个ubuntu远程服务器,比如172.123.342.12。我想通过python脚本在本地机器上备份postgresql数据库

我的剧本是:

def backUp(self):
        Pass = 'fb2024d4'
        os.putenv("PGPASSWORD",Pass)
        dt = datetime.now()
        format = "%Y_%b_%d"
        cur_time = dt.now()
        form_time = cur_time.strftime(format)
        backup_str = "C:\\Bitnami\\odoo-8.0-7\\postgresql\\bin\\pg_dump.exe --format=c -h 172.123.342.12 -p 5432 -d new_db -U bn_openerp > C:\\Users\\n\\Desktop\\Odoo_Backups\\%s.dump" %form_time
        os.system(backup_str)
        print ("Backup Created in Desktop")
        box.showinfo("Information", "Backup Created")

backup()
它什么也不做。一些帮助将不胜感激

编辑:脚本在windows上的数据库上工作,因为我正在使用管理员帐户。所以它不要求输入密码。但当我试图从远程ubuntu服务器备份数据库时。它要求输入密码。 我尝试了以下解决方案:

1.) SET PGPASSPASSWORD = C:\foo\bar..\pgpass.conf.
2.) os.putenv("PGPASSWORD","password")
3.) PGPASSWORD='password' pg_dump.exe -h localhost.....

没有人为我工作。

我能够使用python脚本使用pg_dump.exe创建转储文件:

filename = 'C:/Path/To/File/mydb_dump.sql'
pgDump = 'C:/Program Files/PostgeSQL/9.5/bin/pg_dump'

subprocess.Popen('"{}" -h 127.0.0.1 dbname > "{}"'.format(pgDump, filename), shell=True)

需要注意的几点: 我强烈警告不要使用
shell=True

有一个巨大的安全隐患与可能的外壳注入根据

我不确定是否可以使用远程Ubuntu服务器,但如果所有权限和共享都设置正确,我看不出为什么不能




我知道这很旧,但我希望它能有所帮助。

您不能运行“backup\u str=“C:\\Bitnami\\odoo-8.0-7\\postgresql\\bin\\pg\u dump.exe”“在ubuntu上……你可以在.pgpass文件中保存密码。我正在本地windows计算机上运行它。我已经安装了postgresql。所以我只需要传递参数-h-p-d-U,剩下的就交给它了。这就是为什么我问如何在Windows中将postgres密码Save apassword传递到pgpass file-read“在Microsoft Windows上,该文件名为%APPDATA%\postgresql\pgpass.conf(其中%APPDATA%指用户配置文件中的应用程序数据子目录)。“(c)您能详细说明一下吗。文件pgpass.conf在您所说的目录中。我编辑了它并保存了密码