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 ...
随机推荐
- AtomicIntegerFieldUpdater 源码分析
AtomicIntegerFieldUpdater AtomicIntegerFieldUpdater 能解决什么问题?什么时候使用 AtomicIntegerFieldUpdater? 1)字段必须 ...
- 20160520—JS打分控件
效果预览: 可实现功能:鼠标在滑动条内左右滑动,文本框内分数变动:文本框输入数字,滑动条长度自动改变. JavaScript代码: $(function () { scoreFun($("# ...
- Delphi XE2 之 FireMonkey 入门(3) - 关于 TPosition
把 FireMonkey 简称为 FM 吧. FM 的窗体继续使用 Left.Top 属性, 但更多控件不是了. //FM 控件的位置控制不再是 Left.Top, 取而代之的是 Position 属 ...
- 测开之路一百零四:jquery操作样式
jquery操作样式 添加样式.删除样式 切换样式 css("属性","值") css("属性","值"), 修改多个 ...
- servlet过滤器Filter使用之DelegatingFilterProxy类
正常情况下,我们需要添加一个过滤器,需要实现javax.servlet.Filter接口,再在web.xml中配置filter,如下: package cc.eabour.webapp.securit ...
- Java 基础-类与面向对象
类 Object 类(java.lang.Object)是所有 Java 类的直接或间接父类. 成员方法及变长参数 方法定义: [public | protected | private] [stat ...
- python中5个json库的速度对比
python中json的序列化与反序列化有很多库,具体选择使用哪一个,或者哪一个速度更快呢? 先上结果 json序列化与反序列化速度对比(按总时间排序:测试数据100 * 10000) ujson 序 ...
- 剑指offer(2):字符串
C语言中的字符串 C语言中字符串的存储方式和数组类似,都是连续定长的内存块.字符串数组以\0结尾,所以会比正常数组多一位,char str3[5] = "1234"; //此处赋值 ...
- Jenkins---简单认识
老生常谈:知其然更要知其所以然,所以补充一下Jenkins的相关知识 官方文档:https://jenkins.io/zh/doc/ 问题1:Jenkins是什么? 1.1.Jenkins是一个开源的 ...
- python控制流-导入模块
一.模块 1.含义 Python 程序可以调用一组基本的函数,这称为“内建函数”,包括你见到过的 print().input()和 len()函数.Python 也包括一组模块,称为“标准库”.每个模 ...