Django 数据备份dumpdata 踩的坑

项目背景:
项目使用的是sqlite数据库,要求备份除了网络表之外的所有数据

实施方案:
python3 manage.py dumpdata --exclude network.TRoute --indent 2 --format json > aq3.json

方案操作结果是:
查看aq3.json如下:
在这里插入图片描述
图一
问题:
发现导出的json文件总是多了一行sqlite数据库的路径,原以为是dumpdata 故意加的来记录sqlite数据库路径的,但是,当python3 manage.py loaddata aq3.json的时候,总是提示文件错误,提示错误信息如下:
Traceback (most recent call last):
File “/usr/local/lib/python3.6/dist-packages/Django-2.1.1-py3.6.egg/django/core/serializers/json.py”, line 68, in Deserializer
objects = json.loads(stream_or_string)
File “/usr/lib/python3.6/json/init.py”, line 354, in loads
return _default_decoder.decode(s)
File “/usr/lib/python3.6/json/decoder.py”, line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File “/usr/lib/python3.6/json/decoder.py”, line 357, in raw_decode
raise JSONDecodeError(“Expecting value”, s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
这样看来肯定是文件格式出问题了,但是仔细想想这是manage.py dumpdata 出来的数据,为啥出这种问题啊,再说了,manage.py这个文件也知道db文件的路径,为啥还要存一下啊,这是就去看了一下项目的setting文件,发现db的配置如下:
在这里插入图片描述
发现多了一行打印,去掉这个打印之后导出的文件不再有图一种的db文件路径了,然后再执行python3 manage.py loaddata aq3.json的时候也不会出错了,我类个神呢,竟然会出这种问题

反问:是不是我level太低了,setting不能有print,还是这是django的bug,希望大神来指点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django中实现备份PostgreSQL数据,可以使用Django提供的`django.db`模块中的`connection`方法和`cursor`方法来实现。以下是一个简单的实现示例: 1. 首先,确保已经在项目的`settings.py`文件中配置好了PostgreSQL数据库的连接信息。 2. 在Django项目中创建一个视图函数,用于执行备份操作。例如: ```python from django.db import connection def backup_postgresql(request): # 使用Django的连接方法获取PostgreSQL数据库连接 conn = connection.cursor() # 定义备份文件的路径和文件名 backup_file_path = '/path/to/backup.sql' # 执行备份命令 conn.execute('pg_dump -U your_username -h your_host -p your_port your_database_name > ' + backup_file_path) # 关闭数据库连接 conn.close() return HttpResponse('备份成功!') ``` 3. 在项目的`urls.py`文件中配置备份的URL路径,以便访问备份视图函数。例如: ```python from django.urls import path from .views import backup_postgresql urlpatterns = [ path('backup/', backup_postgresql, name='backup_postgresql'), ] ``` 4. 运行Django项目并访问备份的URL路径,即可触发备份操作。 需要注意的是,以上示例中的备份命令是直接执行系统命令来实现的,所以需要确保项目运行的服务器上已经安装了`pg_dump`命令,并且必须在命令中提供正确的用户名、主机、端口和数据库名称等参数。同时,备份文件路径也需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值