django 导出数据,然后再导入新的Django的数据库

  1. 在旧项目运行指令导出项目:
python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 2 > dump.json 

如果导出的项目报错:Changing django default pk with AutoField to BigAutoField
可以在settings文件加入: DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
如果遇见报错:Django loaddata UNIQUE constraint failed
可以将json文件的‘pk’改为‘id’;如果依然不行,把json文件的user相关的如accounts数据,与accounts相关的数据都删除,即可导入所需data如product数据。

  1. 在新Django项目的settings 文件将原来的数据库设置注释,改成链接新的aws上的数据库或自己指定的数据库:
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
# if 'RDS_DB_NAME' in os.environ:
#     DATABASES = {
#         'default': {
#             'ENGINE': 'django.db.backends.mysql',
#             'NAME': os.environ['RDS_DB_NAME'],
#             'USER': os.environ['RDS_USERNAME'],
#             'PASSWORD': os.environ['RDS_PASSWORD'],
#             'HOST': os.environ['RDS_HOSTNAME'],
#             'PORT': os.environ['RDS_PORT'],
#         }
#     }
# else:
#     DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'ebdb',
        'USER': 'dbusername',
        'PASSWORD': '87366',
        'HOST': 'dkosux7a44ddfbrn.us-west-2.rds.amazonaws.com',
        'PORT': 3306,
    },
}

然后运行命令:
python manage.py loaddata dump.json
3. 将新Django项目的settings 文件改成原来的数据库设置:

if 'RDS_DB_NAME' in os.environ:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': os.environ['RDS_DB_NAME'],
            'USER': os.environ['RDS_USERNAME'],
            'PASSWORD': os.environ['RDS_PASSWORD'],
            'HOST': os.environ['RDS_HOSTNAME'],
            'PORT': os.environ['RDS_PORT'],
        }
    }
else:
    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

完毕!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中实现Excel导入导出可以使用第三方库`openpyxl`和`xlwt`,具体实现步骤如下: 1. 安装`openpyxl`和`xlwt`库 ``` pip install openpyxl xlwt ``` 2. 实现Excel导出 使用`openpyxl`库实现Excel导出,具体步骤如下: - 编写视图函数,查询需要导出数据并将数据转换为`openpyxl`的`Workbook`对象 ```python from django.http import HttpResponse from openpyxl import Workbook def export_excel(request): # 查询需要导出数据 data = ... # 创建Workbook对象 wb = Workbook() # 获取默认的Sheet对象 ws = wb.active # 写入表头 ws.append(['姓名', '年龄', '性别']) # 写入数据 for item in data: ws.append([item.name, item.age, item.gender]) # 设置响应头,告诉浏览器返回的是Excel文件 response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=export.xlsx' # 将Workbook对象写入响应体中 wb.save(response) return response ``` - 在模板中添加导出按钮 ```html <a href="{% url 'export_excel' %}">导出Excel</a> ``` 3. 实现Excel导入 使用`xlwt`库实现Excel导入,具体步骤如下: - 编写视图函数,读取上传的Excel文件并将数据保存到数据库中 ```python import xlrd def import_excel(request): if request.method == 'POST': # 获取上传的文件 file = request.FILES.get('file') # 打开Excel文件 workbook = xlrd.open_workbook(file_contents=file.read()) # 获取第一个Sheet对象 sheet = workbook.sheet_by_index(0) # 遍历每一行数据 for i in range(1, sheet.nrows): row_data = sheet.row_values(i) # 将数据保存到数据库中 ... return HttpResponse('导入成功') else: return render(request, 'import_excel.html') ``` - 在模板中添加上传表单 ```html <form method="POST" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="file"> <input type="submit" value="导入Excel"> </form> ``` 以上就是Django中实现Excel导入导出的方法,希望能对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值