使用Django连接MySql数据库
任何没有连接数据库的系统或网页,都是没有灵魂的。
相信学了基础的Django的读者们一定非常想要连接上自己的数据库,今天就写一下我自己连接数据库的过程以及遇到的那些坑 ( T^T )
项目名–myshop
app名–blog
1.使用Django连接数据库首先要了解一下什么是ORM模型?
ORM的作用是在关系型数据库和业务实体对象之间进行映射,这样在操作业务对象时,就不需要再去和复杂的SQL语句打交道,只需要简单的操作对象的属性和方法。
ORM的表现方式就是编写数据模型类,这些类可以写到任何文件中,通常写在每个应用的models.py文件中,每个数据模型类都是django.db.models.Model的子类
表名组成方式:应用的名称(小写字母)+数据模型类(小写字母) 例如:blog_student
2.然后在blog下的models.py文件中添加Student类
注:这里的Student类等价于数据库中的表,类中的属性等价于表中字段
如,根据第一部的介绍,表的名称就是blog_student,该表中的字段名分别是name,xuehao,age,jianjie
from django.db import models
class Student(models.Model):
name=models.CharField(max_length=50)
xuehao=models.CharField(max_length=20)
age=models.CharField(max_length=20)
jianjie=models.TextField()
数据模型类(model)依然是Python中的类,可以在其中命名属性(变量)和方法。
每个属性(变量)对应着数据库中的一个字段,变量也被称为字段,Django会为每个数据模型类设置一个自增长的id字段并作为该表的主键,不需要再数据模型类中写出来。
字段属性类型
- CharField:用于保存字符串,在使用时需要指明长度
- TextField:和CharField一样,区别在于无上限,通常用于保存大文本
- DateField和DateTimeField:用于保存时间
3.修改myshop下的settings.py文件
找到DATABASES,修改
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myshop_2',
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': '3306',
}
}
注释掉的两句为原来默认的.
ENGINE :连接的数据库类型
NAME :要连接的数据库名
USER:数据库用户名
PASSWORD :数据库密码
HOST :主机地址
PORT :数据库的端口号
找到INSTALLED_APPS 添加
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', #将app名添加到此处
]
4.使用 pip install pymysql 安装pymysql库
并在myshop下的__init .py文件中写入如下语句:
注:此处有个坑,在网上看的链接数据库,用的是mysqlclient这个库 ,但是在安装这个库时经常安装失败,所以,劝大家不要用mysqlclient,直接用pymsql.
import pymysql
pymysql.install_as_MySQLdb()
5.在终端执行数据迁移命令
python manage.py makemigrations
6.在终端执行migrate命令真正生成数据库表文件
python manage.py migrate
如控制台输入如上信息,说明连接数据库成功。