DJango配置mysql数据库以及数据库迁移

DJango配置mysql数据库以及数据库迁移,第1张

概述DJango配置mysql数据库以及数据库迁移 一.Django 配置MySQL数据库 在settings.py中配置 数据库结构迁移 Python3不支持MySQLdb,可用pymysql代替。 1 DJango配置MysqL数据库以及数据库迁移一.Django 配置MysqL数据库在settings.py中配置
import pyMysqL           # 配置MysqLpyMysqL.install_as_MysqLdb()DATABASES = {    'default': {        'ENGINE': 'django.db.backends.MysqL',# 数据库引擎        'name': 'mydb',# 你要存储数据的库名,事先要创建之        'USER': 'root',# 数据库用户名        'PASSWORD': '1234',# 密码        'HOST': 'localhost',# IP        'PORT': '3306',# 数据库使用的端口    }}
数据库结构迁移

python3不支持MysqLdb,可用pyMysqL代替。

1.首先,在Python虚拟环境下安装pyMysqL:pip install pyMysqL。

2.然后,在项目文件夹下的_init_.py(实际上也可以添加到settings.py中,如上。)添加如下代码即可。

import pyMysqLpyMysqL.install_as_MysqLdb()

3.再者,在Terminal中执行数据库迁移命令:

python manage.py makemigrationspython manage.py migrate温馨提示:若执行python manage.py makemigrations时提示"No changes detected",则试试先执行python manage.py makemigrations --empty appname解决问题。
二.数据迁移把sqlite数据导入到MysqL中

之前我们默认使用的是sqlite数据库,我们开发完成之后,里面有许多数据。如果我们想转换成MysqL数据库,那我们先得把旧数据从sqlite导出,然后再导入到新的MysqL数据库里去。

1、sqlite导出数据

导出之前,我们先确保settins.py数据库配置选项那里,还是使用的是sqlite配置,如果已经修改了,请先修改回来:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3','name': os.path.join(BASE_DIR,'db.sqlite3'),}}

然后在CMD命令行里输入:

python manage.py dumpdata > data.Json

这样就将数据导出到Django项目根目录下的data.Json文件。

2、MysqL导入数据

同样,先将Django的数据库配置改为MysqL的:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.MysqL','name': '你的数据库名','USER': '你的MysqL用户名','PASSWORD': '你的密码','HOST': 'IP','PORT': '3306',}}

然后在CMD命令行里输入:

python manage.py loaddata data.Json

注意:

确保MysqL用户表里为空的,如果之前有迁移过数据到MysqL,有可能会出错。注意出错的时候所报的错误信息。如果提示有重复主键,那需要先删掉数据。这些数据是在给MysqL数据库应用迁移文件的时候产生的,一般是content_type相关的表。

进入到MysqL,执行如下的SQL语句:

use 你的数据库名;delete from auth_permission;delete from django_content_type;

删除数据之后,再执行一次导入命令即可。基本上,导入不了数据都是MysqL存在数据导致的。

3、加载时区表

另外,有可能所安装的MysqL没有加载时区表。这个可能会导致filter对日期的查询有问题。Django官方文档也指出这个问题。MysqL官网也有对应处理方法:加载时区表

linux/Mac解决方法都很简单。windows系统要先下载一个sql文件:timezone_2018e_posix_sql.zip

下载完成之后,解压得到一个sql文件,再执行cmd命令导入该文件即可:

MysqL -u root -p MysqL < timezone_posix.sql
4、MysqL数据到Postgresql

*** 作很简单:

python manage.py dumpdata > backup.Json

到Postgresql对应的配置中:

python manage.py loaddata backup.Json
三.不同APP之间的数据库迁移1.生成模型文件
python3 manage.py inspectdb
2.将模型文件导入到app当中

创建app

python3 manage.py startapp 'app名字'
3.将模型导入创建的app中
python3 manage.py inspectdb > app/models.py
总结

以上是内存溢出为你收集整理的DJango配置mysql数据库以及数据库迁移全部内容,希望文章能够帮你解决DJango配置mysql数据库以及数据库迁移所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存