Skip to content
On this page

Django 连接外部数据库

Mariadb、MySQL

1、安装pymsql模块

pip3 install pymysql
pip3 install pymysql

2、在当前app的__init__.py文件中引入该模块

import pymysql 
pymysql.install_as_MySQLdb()
import pymysql 
pymysql.install_as_MySQLdb()

3、修改settings.py配置文件

# 找到Database配置段, 参考如下配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_application',
        'USER': 'root',
        'PASSWORD': '123',
        'HOST': '172.12.0.2',
        'PORT': '3306',
    }
}
# 找到Database配置段, 参考如下配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_application',
        'USER': 'root',
        'PASSWORD': '123',
        'HOST': '172.12.0.2',
        'PORT': '3306',
    }
}

4、编写models.py模型文件

如果使用pycharm的话,此时就可以使用数据库插件进行测试连接数据库 ,如果没有问题的话,就可以继续下面的操作了。(可选)

在项目app的models.py模型文件中,输入以下测试内容(该示例代码来源于官方站点)

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

5、进行数据迁移

# 在终端下执行以下命令
python manage.py makemigrations [指定特定的APP,可无]		# 检测对模型文件的修改,并把修改的部分存储为一次迁移
python manage.py sqlmigrate test_application 0001 	# 查看模型文件生成的sql语句
python manage.py migrate		# 在数据库里创建新定义的模型的数据表
# 在终端下执行以下命令
python manage.py makemigrations [指定特定的APP,可无]		# 检测对模型文件的修改,并把修改的部分存储为一次迁移
python manage.py sqlmigrate test_application 0001 	# 查看模型文件生成的sql语句
python manage.py migrate		# 在数据库里创建新定义的模型的数据表

至此,简单的连接至Mairadb/mysql数据库就完成了。