Django连接数据库
准备工作
安装MySQL驱动
Django和MySQL是两个独立的东西,需要有一个“桥梁”去连接它们,而MySQL驱动就是这个“桥梁”。
MySQL的驱动有如下这些:
- MySQL-python:C语言编写,效率高,但只支持python2
- mysqlclient:MySQL-python的一个分支,支持python3
- pymysql:python编写,效率不高
- mysql-connector:同样是python编写,效率不高
这里我们是用mysqlclient作为MySQL驱动,安装的步骤也很简单
pip install mysqlclient
数据库配置
在项目创建之后,数据库的设置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
需要修改为如下配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎选择mysql
'NAME': 'django_database_1', # 数据库名称
'HOST': '127.0.0.1', # 地址
'PORT': 3306, # 端口
'USER': 'root', # 用户名
'PASSWORD': 'root', # 密码
}
}
安装MySQL(不作详细介绍)
SQLyog安装
官网下载即可
环境配置
可以用phpstudy直接配置环境,无需自己配置
数据库迁移
- 需要在SQLyog中创建数据库(settings.py中配置的数据库名称)
- 在app的models.py中定义ORM模型
from django.db import models
class Book(models.Model):
id = models.AutoField(primary_key=True)
book_name = models.CharField(max_length=20)
author = models.CharField(max_length=20)
price = models.FloatField()
# 打印需要
def __str__(self):
return f'book_id: {self.id}, book_name: {self.book_name}, author: {self.author}, price: {self.price}'
# 自定义表名,如果不自定义,表名为“app的名字_模型名称小写”
class Meta:
db_table = 'book'
- 注册app
- 生成脚本迁移文件(以下两个步骤cmd下运行)
python manage.py makemigrations
- 数据库迁移
python manage.py migrate
打开SQLyog,查看刚刚创建的表,出现与定义的模型匹配的字段即迁移成功
拓展
ORM模型
ORM模型一般放在app的models.py中
Django可以使用原生的SQL语句进行查询,但用法复杂且效率不高;而用ORM模型可以简化SQL语句的复杂程度,不拘泥于SQL语法,更专注逻辑实现。