我有一个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.....
没有人为我工作。
答案 0 :(得分:0)
我能够使用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
!!!
根据documentation,可能有贝壳注射存在巨大的安全隐患。
我不确定是否可以使用远程 Ubuntu服务器,但如果所有权限和共享都设置正确,我无法理解为什么不能。
我知道这很老了,但我希望它有所帮助。