前言
项目部署到服务器之后,用的数据库还是sqlite3。
发现一些问题,sqlite3是小巧,但是服务器上查看数据库比较费劲,不能直观看到数据。可是我们经常需要即时、直观查看数据,这就用到MySQL。
当然MySQL还有很多其他优点,比如默认引擎为innodb,支持事务等,请自行百度。
参考博文:
https://www.cnblogs.com/rkfeng/p/7800730.html

一、错误示例

绝大多数的搜索结果里面出现的方法如下:

python ./manage.py dumpdata > data.json

  

python ./manage.py loaddata data.json

笔者试过,It doesn't work!

二、正确方法(适用于python3)

1.编辑settings.py,添加slave数据库。

DATABASES = {'default': {...}, 'slave': {...}}

  修改后大致如下所示

DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": os.path.join(BASE_DIR, 'db.sqlite3'),
},
"slave": {
"ENGINE": "django.db.backends.mysql",
"NAME": "XXXXXX",
"USER": "XXXXXX",
"PASSWORD": "XXXXXX",
"HOST": "127.0.0.1",
"PORT": "3306",
},
}

  思想上就是主从同步。

2.创建数据库

CREATE DATABASE XXXXXX CHARACTER SET utf8 COLLATE utf8_general_ci;

3.在新的数据库中创建表

python manage.py migrate --run-syncdb --database slave

4.创建to_slave.py在项目目录

# -*- coding:utf-8 -*-
from __future__ import unicode_literals from django.contrib.contenttypes.models import ContentType def run():
failed_list = [] def do(table):
if table is not None:
try:
table_objects = table.objects.all()
for i in table_objects:
i.save(using='slave')
except:
failed_list.append(table) ContentType.objects.using('slave').all().delete() for i in ContentType.objects.all():
do(i.model_class()) while failed_list:
table = failed_list.pop(0)
do(table)

5.同步

进入shell

python manage.py shell

在python shell中执行

>>>from to_slave import run
>>>run()

6.将slave变为默认的数据库

此操作前需确保数据已经完全迁移成功。

django数据库迁移相关【sqlite3迁移到MySQL】(django2.0.3测试通过)的更多相关文章

  1. Django数据库操作性能相关

    Django数据库操作性能相关 案例: 现在我们的数据库中有两张表如下: 1.职员表: class UserInfo(models.Model): name = models.CharField(ma ...

  2. Django基础 - 修改默认SQLite3数据库连接为MySQL

    Django数据库连接默认为SQLite3,打开setting.py可以看到数据库部分的配置如下: DATABASES = { 'default': { 'ENGINE': 'django.db.ba ...

  3. django数据库的表已迁移的不能重新迁移的解决办法

    django.db.utils.InternalError: (1050, "Table 'tb_content' already exists") mysql数据库在迁移时数据库 ...

  4. Django 数据库迁移

    Django 数据库迁移 DATABASES = { # Django默认配置使用sqlite3数据库 # 'default': { # 'ENGINE': 'django.db.backends.s ...

  5. 初码-Azure系列-记一次MySQL数据库向Azure的迁移

    初码Azure系列文章目录 还在继续给客户迁移不同的系统到Azure,这一次是一个系统的MySQL数据库要迁移,将迁移过程记录一下 原系统环境 数据库版本:MySQL Community Editio ...

  6. django 数据库配置 ,APP 迁移.模型基础

    # 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...

  7. django2.0+连接mysql数据库迁移时候报错

    django2.0+连接mysql数据库迁移时候报错 情况一 错误信息 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 ...

  8. MySQL数据库的库表迁移

    最近在研究MySQL数据库的库表迁移问题,主要分为两种情况,一种情况是迁移数据库的表的全部字段,另一种是迁移数据库的表的部分字段.前一种情况是直接使用mysqldump命令来实现,后一种情况则是采用数 ...

  9. (转)如何将数据库从SQL Server迁移到MySQL

    一.迁移Database Schema. 首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型.具体操作是在Powerdesigner中选择“F ...

随机推荐

  1. docker进阶——数据管理与网络

    一.数据卷管理 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Vo ...

  2. Swiper轮播手动后不动

    最近项目首页轮播图用了Swiper轮播,今天突然发现轮播图动画初始正常但是手动换过之后就不动了,解决方法有两种,具体根据采用的情况为准: 1.autoplayDisableOnInteraction: ...

  3. Android安全测试(二)反编译检测

    1.测试环境 SDK: Java JDK, Android SDK. 工具: 7zip, dex2jar, jd-gui 2.操作步骤 第一步:把apk改后缀名为zip 第二步:将zip文件解压,得到 ...

  4. 深度探索区块链/基于Gossip的P2P数据分发(4)

    一.概述 背书节点模拟执行签名的结果会经过排序服务(Ording service)广播给所有的节点. 它提供的是一种原子广播服务(Atomic Broadcast),即在逻辑上所有节点接收到的消息顺序 ...

  5. String类为什么是final

    String 本身一个对象,对象在jvm启动的时候就要实例化和其他类调用就要实例化,第一性能,第二安全,因为string的高频繁的使用,如果被继承,哪里性能将会大大降低,因为不能被继承,换句话来说就比 ...

  6. python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件

    上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...

  7. CDH平台搭建遇到的问题

    安装之前遇到的问题:   Note: Forwarding request to 'systemctl disable NetworkManager.service'. Removed symlink ...

  8. 配置Trunk接口

    实验内容 本实验模拟某公司网络场景.公司规模较大,员工200余名,内部网络是-一个大的局域网.公司放置了多台接入交换机(如S1和S2)负责员工的网络接入.接入交换机之间通过汇聚交换机S3相连.公司通过 ...

  9. [Python3] 009 字符串:给你们看看我的内置方法 第一弹

    目录 前言 如何查看 python3 中和 str 有关的方法 字符串方法 1. capitalize() 2. casefold() 3. center(width) 4. count(sub[, ...

  10. [2019杭电多校第五场][hdu6629]string matching(扩展kmp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6629 题意求字符串的每个后缀与原串的最长公共前缀之和. 比赛时搞东搞西的,还搞了个后缀数组...队友一 ...