第一章 :Django安装与配置虚拟环境
第二章:django各模块的作用以及参数说明
第三章: Django的路由与视图
第四章:django请求
第五章:django会话
第六章:django中的cookie与session
第七章:视图类
第八章:模型类
目录
一、首先要安装一个mysql数据库
二、配置连接数据库
1.更改setting中DATABASES中的数据
2.在软件包中的init文件中导入pymysql,并使用它
安装pymysql
导入
打开init文件进行pymysql的导入与使用
错误
三、数据表的映射
四、数据库的迁移
生成迁移文件
按照迁移文件进行数据库的迁移与创建
总结
服务器存储数据需要用到数据库,当django自带的数据库不能满足需求的时候,要怎么样去更换数据库,并且把数据迁移到新的数据库中呢,这篇文章揭晓答案
乌班图虚拟机可以参考mysql安装
windows的话网上教程很多的,mysql安装这里就不再多说了
# 数据库
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 直接把原来的后缀换成mysql
'ENGINE': 'django.db.backends.mysql',
# 'NAME': BASE_DIR / 'db.sqlite3',
# 数据库的id地址,本地的话直接用127.0.0.1,虚拟机的话使用虚拟机的地址,我这里用的虚拟机
'HOST': '172.26.55.57',
# 端口号,默认是3306,除非你改过数据库配置
'PORT': '3306',
# 用来登录数据库的用户名
'USER': 'root',
# 用来登录数据库的密码
'PASSWORD': '123456',
# 连接的数据库名
'NAME': 'Djangoone',
}
}
在控制台中输入
pip install pymysql
import pymysql
# 使用mysqldb
pymysql.install_as_MySQLdb()
版本错误可以指定版本号,前三个参数指定版本号,一本不会因为版本不一致出现兼容问题
pymysql.version_info = (1, 4, 13, 'final', 0)
在django中模型类与数据库进行交互,在模型类中定义的类叫做模型类,一个模型类与一个表相对应,在迁移时候django会自动进行数据表的创建
from django.db import models
# python manage.py makemigrations
# python manage.py migrate
# Create your models here.
# models.Model
# 模型类
class BookInfo(models.Model):
# verbose_name = '书名'(别名), max_length = 20(长度),default(默认值),null=True允许为空
name = models.CharField(verbose_name='书名', max_length=20)
chuban_date = models.DateField(verbose_name='出版日期', default='', null=True)
read_count = models.IntegerField(verbose_name='阅读量', default=0)
pinglun_count = models.IntegerField(verbose_name='评论量', default=0)
is_del = models.BooleanField(verbose_name='是否可用', default=False)
class Meta:
# 指定表名
db_table = 'bookinfo'
# 在后台显示名称
verbose_name = '图书'
# 在后台显示名称不加复数
verbose_name_plural = '图书'
def __str__(self):
# 返回对象属性
return self.name
其中类属性对应数据表中的字段,类属性的参数指定数据库字段的属性,注意class Meta是内部类,用来定义表名和管后台名称(之后要用到,django提供的一个功能)
在迁移之前要使用命令来对我们写的模型类生成一个迁移文件
python manage.py makemigrations
python manage.py migrate
这些都需要在终端中进行,并且目录切换到与manage.py文件同目录
在django中创建数据表甚至都不需要你去写sql语句,只需要创建一个模型类与之对应即可,大大方便了编写sql语句创建表的过程,但是缺点也是有的,django把数据表映射成一个对象,由对象操控表,避免不掉一点性能上的消耗