django全栈(四):django-备份数据库到dropbox

django全栈(四):django-备份数据库到dropbox

  • 需求

      我有一个vps,既可以当梯子的服务端,也放了我的django网站。有一个很坑的地方是,不能登陆邮箱发邮件。是的,用smtplib、yagmail发邮件,统统连不上服务器,但是可以ping通邮件服务网关。

      为这个问题,我还在stackoverflow上奋战了多日,有些说是25端口被禁用,需要找厂家咨询,申请开通。

      然后问了下客服,说不支持发邮件。。。。。坑。。。。。

      然后,我的网站每日备份就得着落在dropbox上了。。。

      由于之前用的wordpress搭的博客,自带插件可以备份数据库到dropbox。挺好用的,而且在vps上是成功的。

      ps:没有梯子的同学,还是歇了吧,dropbox你连不上啊。。。连不上,你咋在自己的环境上测试。。。


  • python上传文件到dropbox代码
import dropbox
import zipfile
import os
import sys

TOKEN = "mytoken....."

dbx = dropbox.Dropbox(TOKEN)
dbx.users_get_current_account()

def put_file(path, upload_name):
    with open(path, "rb") as f:
        dbx.files_upload(f.read(), "/{}".format(upload_name))

def zip_file(file_path, zip_path):
    ziph = zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED)
    ziph.write(file_path)
    ziph.close()

if __name__ == '__main__':
    if len(sys.argv) < 3:
        print("usage file_to_upload file_name")
        exit(1)

    BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, os.pardir)
    print(BASE_DIR)
    tmp_file_name = "{}/{}".format(BASE_DIR, sys.argv[2])
    zip_file(sys.argv[1], tmp_file_name)
    put_file(tmp_file_name, sys.argv[2])

命令行传入要上传的文件路径和上传后文件名。然后将文件打个zip包,然后上传到dropbox。


  • dropbox创建app教程

      首先,官网链接在这里https://www.dropbox.com/developers/apps/create

      没梯子看不了。我截张图吧。。。


      点几下就创建成功了。

      然后在自己已经创建的app配置页面,又截了张图如下。


      点击Generated access token下面的一个按钮就可以产生你的Token了。这个token复制到你的python代码中,即可访问到你的dropbox相关目录。可以获取帐户信息,目录信息,上传文件等。

      OK,到这基本大功告成。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值