Python 如何使用XMLRPC备份数据库?

Python 如何使用XMLRPC备份数据库?,python,odoo,openerp-8,Python,Odoo,Openerp 8,我正在尝试使用以下脚本备份数据库: import xmlrpclib sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/db') backup_file = open('backup.dump', 'wb') # Same extension used by Odoo backup_file.write(sock.dump('mypassword', 'mydb')) backup_file.close() 此时,文件的内容

我正在尝试使用以下脚本备份数据库:

import xmlrpclib

sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/db')
backup_file = open('backup.dump', 'wb') # Same extension used by Odoo
backup_file.write(sock.dump('mypassword', 'mydb'))
backup_file.close()
此时,文件的内容如下所示:

UEsDBBQAAAAIADGEbkVAyAv5JvGAAMH+wQEIAAAAZHVtcC5zcWzsvWtz3EaSNvrdvwLxbrzH5K7N
GWv3ndjjGc8GTdG2ZinJI9LWzjlxogPsRlMYo4E2gJZE//pTV6CuQFUhE/RcFDFjNrrxZNYt88ms
2+eff/L559n3Tdc/tMXtn2+yXd7n93lXZLvT4Ui+++ST2+u7rOvzvjgUdb/py0PRnPrsq+y3v2df
Vc32J/vptirpr4t62+zK+oF88ekPd9/856e/l3D1Lm93m21T75v2QH6x6fqW/Kcjv2xqgfGuIND7
U73ty6be3BOkgn6/z6uu0MQQgM2h6Lr8gf3gQ97WBOv3n1D9SfFe5Yfiy+xYHR+6n6vfZ3ePR/Lx
+n/url/dvnj96vfZLZF0yL/MPv999vpDXbTkL1byqzfXl3fX4y+zF99kr17fkQcvbu9uJWD29sXd
d9nt1XfXLy+z48NmS2qwaqh0TfyIYihy9frly+tXdxNq8B9k5FULJHtxm336/c1vjg+08Y5tsy12
pzavsiqvH06kPj6lerA6L/J2+25zzPt3pIqOp/uq3H6m60t/tiv2+aki7ZzfV0V3zLcFbbtPjW8/
lP27TVPulObQCptvt82JNIz4ryzq3eXXN9djQbkSY2nJzwapX2ZqE7AXTdTs7JOM/Ct3WVn3xUPR
ssZ59cPNzWfsi2Pe0s5RFfte/kL7oi0f3hnfkN5akH6Xt/m2J3jv8/aRdKSz3/3HuYG9bQsyIjZk
tBQZ7fykRx+OGa0WOgzok+yXpi74j9uC9PNtWRXZfdNURV4LjFNL9Ng+bsYSaOAn8/mHtnQ9PnVF
...
...
当通过Odoo数据库管理进行备份时,我会得到一个压缩文件,这正是我想要实现的。例如测试_2014-11-12_16-06-35Z.转储

有没有办法将所有这些字节“重建”为有效的Odoo备份文件?我尝试了
StringIO
ByteIO
,但没有成功。任何帮助都将不胜感激


解决方案

多亏了@André,我终于找到了一个解决方案:

import base64
import xmlrpclib

sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/db')
backup_file = open('backup.dump', 'wb') 
backup_file.write(base64.b64decode(sock.dump('mypassword', 'mydb')))
backup_file.close()
函数的作用是:在返回文件之前对其进行编码。您可以使用base64命令对其进行解码:

base64 -d [dump file] > [decoded file]