• Django 配置MySQL数据库


    在settings.py中配置

    import pymysql           # 配置MySQL
    pymysql.install_as_MySQLdb()
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
            'NAME': 'mydb',         # 你要存储数据的库名,事先要创建之
            'USER': 'root',         # 数据库用户名
            'PASSWORD': '1234',     # 密码
            'HOST': 'localhost',    # 主机
            'PORT': '3306',         # 数据库使用的端口
        }
    }

    数据库结构迁移

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

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

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

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

    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': 'localhost',
            '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存在数据导致的。

    加载时区表

    另外,有可能所安装的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

      至此。转载请注明出处,记得扫码打赏支持哦,谢谢!

    [ 本站相关链接:>>Django部署 ]

  • 相关阅读:
    2017.3.13-afternoon
    2017.3.13-morning
    2017.3.10-afternoon
    2017.3.10-morning
    2017.3.9-afternoon
    2017.3.9-morning
    神经网络入门
    webpack 安装
    git 常用命令
    mysql 用户管理和权限设置
  • 原文地址:https://www.cnblogs.com/wcwnina/p/8719482.html
Copyright © 2020-2023  润新知