django数据库迁移相关【sqlite3迁移到MySQL】(django2.0.3测试通过)
前言
项目部署到服务器之后,用的数据库还是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测试通过)的更多相关文章
- Django数据库操作性能相关
Django数据库操作性能相关 案例: 现在我们的数据库中有两张表如下: 1.职员表: class UserInfo(models.Model): name = models.CharField(ma ...
- Django基础 - 修改默认SQLite3数据库连接为MySQL
Django数据库连接默认为SQLite3,打开setting.py可以看到数据库部分的配置如下: DATABASES = { 'default': { 'ENGINE': 'django.db.ba ...
- django数据库的表已迁移的不能重新迁移的解决办法
django.db.utils.InternalError: (1050, "Table 'tb_content' already exists") mysql数据库在迁移时数据库 ...
- Django 数据库迁移
Django 数据库迁移 DATABASES = { # Django默认配置使用sqlite3数据库 # 'default': { # 'ENGINE': 'django.db.backends.s ...
- 初码-Azure系列-记一次MySQL数据库向Azure的迁移
初码Azure系列文章目录 还在继续给客户迁移不同的系统到Azure,这一次是一个系统的MySQL数据库要迁移,将迁移过程记录一下 原系统环境 数据库版本:MySQL Community Editio ...
- django 数据库配置 ,APP 迁移.模型基础
# 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...
- django2.0+连接mysql数据库迁移时候报错
django2.0+连接mysql数据库迁移时候报错 情况一 错误信息 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 ...
- MySQL数据库的库表迁移
最近在研究MySQL数据库的库表迁移问题,主要分为两种情况,一种情况是迁移数据库的表的全部字段,另一种是迁移数据库的表的部分字段.前一种情况是直接使用mysqldump命令来实现,后一种情况则是采用数 ...
- (转)如何将数据库从SQL Server迁移到MySQL
一.迁移Database Schema. 首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型.具体操作是在Powerdesigner中选择“F ...
随机推荐
- 架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO
ylbtech-架构-数据库访问-SQL语言进行连接数据库服务器-DAO:DAO DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口,它显露了 Microsoft ...
- 测开之路一百零四:jquery操作样式
jquery操作样式 添加样式.删除样式 切换样式 css("属性","值") css("属性","值"), 修改多个 ...
- spring boot 整合 RabbitMQ 错误
1.错误 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.spr ...
- 浅谈Java反射机制 之 获取类的字节码文件 Class.forName("全路径名") 、getClass()、class
另一个篇:获取 类 的 方法 和 属性(包括构造函数) 先贴上Java反射机制的概念: AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它 ...
- DFS序1
给一棵有根树,这棵树由编号为1..N的N个结点组成.根结点的编号为R.每个结点都有一个权值,结点i的权值为vi .接下来有M组操作,操作分为两类:1 a x,表示将结点a的权值增加x:2 a,表示求结 ...
- mysql压缩包安装相关过程命令
mysqld --remove mysql57 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL目 ...
- Java类和对象的内存分配
类的加载时机: 1.创建对象 2.调用类的静态成员 3.加载子类 类在实例化后的内存分配 1.每次创建对象时,都需要进行加载和创建2个操作: ① 先去判断需要的类是否已经加载,如果已经加载了,则无需再 ...
- Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍
原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...
- C#取模的理解:为什么当a<b,a%b=a?
一,取模a%b 1,如果a>b,例如10%7=3,这是什么原因呢?可以根据下面的理解 10 =7*1+3,则模就是3 2,如果a<b,例如7%10 = 7,这时怎么得到的呢?根据下面来理解 ...
- express通过生成器
express通过生成器 [ 脚手架 ] 1. 作用:可以帮助快速构建一个express项目 2. 脚手架的安装 全局安装 [可以使用npm cnpm] $ cnpm i express-genera ...