pg_在python中转储密码
我有一个ubuntu远程服务器,比如172.123.342.12。我想通过python脚本在本地机器上备份postgresql数据库 我的剧本是: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
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在您所说的目录中。我编辑了它并保存了密码