django 配置mysql_Django 配置MySQL数据库 mysql

本文介绍了如何将Django项目从SQLite数据库迁移到MySQL,包括在settings.py中配置MySQL,解决Python3与MySQLdb的兼容问题,执行数据库迁移,以及数据导入导出的详细步骤。在迁移过程中需要注意数据库结构的兼容性和数据冲突问题。
摘要由CSDN通过智能技术生成

在settings.py中配置

48304ba5e6f9fe08f3fa1abda7d326ab.png

DATABASES ={

'default': {

'ENGINE': 'django.db.backends.mysql', #数据库引擎

'NAME': 'mydb', #你要存储数据的库名,事先要创建之

'USER': 'root', #数据库用户名

'PASSWORD': '1234', #密码

'HOST': 'localhost', #主机

'PORT': '3306', #数据库使用的端口

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

数据库结构迁移

Python3不支持MySQLdb,可用pymysql代替。

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

2.然后,在项目文件夹下的_init_.py添加如下代码即可。

importpymysql

pymysql.install_as_MySQLdb()

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

python manage.py makemigrations

python 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配置,如果已经修改了,请先修改回来:

48304ba5e6f9fe08f3fa1abda7d326ab.png

DATABASES ={

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

然后在CMD命令行里输入:

python manage.py dumpdata > data.json

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

2、MySQL导入数据

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

48304ba5e6f9fe08f3fa1abda7d326ab.png

DATABASES ={

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': '你的数据库名',

'USER': '你的MySQL用户名',

'PASSWORD': '你的密码',

'HOST': 'localhost',

'PORT': '3306',

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

然后在CMD命令行里输入:

python manage.py loaddata data.json

注意:

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

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

use 你的数据库名;

delete fromauth_permission;

delete from django_content_type;

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

加载时区表

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

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

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

mysql -u root -p mysql < timezone_posix.sql

MySQL数据到PostgreSQL

操作很简单:

python manage.py dumpdata > backup.json

到PostgreSQL对应的配置中:

python manage.py loaddata backup.json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值