【发布时间】:2015-08-09 01:18:18
【问题描述】:
我有一个 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.....
没有人为我工作。
【问题讨论】:
-
你不能在 ubuntu 上运行 "backup_str = "C:\\Bitnami\\odoo-8.0-7\\postgresql\\bin\\pg_dump.exe"...
-
您可以将密码保存在 .pgpass 文件中
-
我在本地 Windows 机器上运行它。我已经安装了 postgresql。所以我只需要传递参数 -h -p -d -U 剩下的就交给它了。这就是为什么我问如何在 Windows 中传递 postgres 密码
-
save apassword to pgpass file - read postgresql.org/docs/9.1/static/libpq-pgpass.html "在 Microsoft Windows 上,该文件名为 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 指的是用户配置文件中的应用程序数据子目录)。” (c)
-
你能详细说明一下吗?文件 pgpass.conf 在你说的目录中。我编辑了它并保存了密码
标签: python postgresql pg-dump