本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

使用MySQL作为Django数据库后端

写在开始之前

请联系作者获得授权!

  1. Django默认使用SQLite作为默认数据库。如果不熟悉数据库或仅是为了测试,这是最简单的选择,并且Python内置了SQLite,但是,对于准备开始1个真正的项目而言,应该使用1个更具扩展性的数据库。例如:MySQL/PostgreSQL,毕竟中途切换数据库是个令人头疼的问题;
  2. 除了DB API驱动程序之外,Django还需要一个适配器来从其ORM访问数据库驱动程序。Django为mysqlclient提供了一个适配器,因此你可以不用关心这一点;
  3. 使用SQLite以外的数据库,必须事先创建数据库。

怎么做?

  • 安装MySQL的Python API 驱动程序

    # ArchLinux用户
    [mu@mu polls]$ sudo pacman -S base-devel #至少安装gcc
    
    # CentOS用户
    # yum -y install gcc mysql-devel python3X-devel
    
    [mu@mu polls]$ sudo pip3 install mysqlclient
  • 创建数据库

    [mu@mu polls]$ mysql mysql -uroot -p
    MariaDB [mysql]> CREATE DATABASE django_project CHARACTER SET utf8; #确保默认情况下所有表和列都将使用UTF-8,这是Django所期望的
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [mysql]> GRANT ALL PRIVILEGES ON django_project.* TO django@'localhost' IDENTIFIED BY 'guomai';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [mysql]> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)
  • 配置MySQL DB ENGINE及相关键值项

    Waning: Unauthorized Copied! Source:数字漩涡
    [mu@mu polls]$ vi ../mysite/settings.py #修改DATABASE配置段
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django_project',
            'USER': 'django',
            'PASSWORD': 'guomai',
            'HOST': 'localhost', # 如是在本机,还可以指定UNIX sockets套接字文件,即'/var/run/mysql'
            'PORT': '3306',
        }
    }
    
    #一个值得关注的Tip
    Django使用MySQL作为后端时,连接设置按此优先级顺序使用:
    1. OPTIONS;
    2. NAME,USER,PASSWORD, HOST,PORT;
    3. MySQL选项文件;
    
    换句话说,如果你设置数据库的名称OPTIONS,这将优先于NAME,它将覆盖MySQL选项文件中的任何内容。
    以下是使用MySQL选项文件的示例配置:
    
    # settings.py
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'OPTIONS': {
                'read_default_file': '/path/to/my.cnf',
            },
        }
    }
    
    # my.cnf
    [client]
    database = NAME
    user = USER
    password = PASSWORD
    default-character-set = utf8
  • 导入APP

    [mu@mu polls]$ vi ../mysite/settings.py  #修改`INSTALLED_APPS`设置项
    INSTALLED_APPS = [ #应用能在多个项目中使用
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ]
  • 默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表

    [mu@mu mysite]$ python3 manage.py migrate #应用ORM创建数据表

    请输入图片描述

  • 查看migrate为应用创建的数据表。如果通过show tables能够看到下图所示,意味着以及成功切换Django的数据库后端为MySQL
    请输入图片描述

 继续浏览关于 Django 的文章

 本文最后更新于 2019/01/26 11:52:11,可能因经年累月而与现状有所差异

 引用转载请注明:数字漩涡 > Python > 使用MySQL作为Django数据库后端

发现共鸣

如是说:我还在原地等你 你却已经忘记来过这里