django中的数据库迁移 Django是用python写的web开发框架,其特点是:
1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速,
2.MVT模式:前后端分离,高内聚低耦合,m:model,与mvc中的m功能相同,负责和数据库交互,进行数据处理,v:view,与mvc中的c功能相同,接收请求,进行业务处理,返回应答, t:template,与mvc中的v功能相同,负责封装构造要返回的html。
orm:对象关系映射,主要实现模型对象到数据库数据的映射。
1.首先要在models.py中建立模型类,示例:
from django.db.models import *
class User(Model):
dingid_w = CharField('钉钉Id', max_length=128, null=False, blank=False, default='', unique=True)
userid = CharField('员工唯一标识ID', max_length=128, null=False, blank=False, default='', unique=True)
name = CharField('成员名称', max_length=128, null=False, blank=False, default='')
mobile = CharField('手机号码', max_length=64, null=False, blank=False, default='', db_index=True)
tel = CharField('分机号', max_length=64, null=False, blank=False, default='', db_index=True)
avatar = ImageField('头像url', max_length=1024, null=False, blank=False, default='')
work_place = CharField('办公地点', max_length=128, null=False, blank=False, default='')
ding_remark = CharField('备注', max_length=1024, null=False, blank=False, default='')
email = CharField('员工的电子邮箱', max_length=128, null=False, blank=False, default='')
org_email = CharField('员工的企业邮箱', max_length=128, null=False, blank=False, default='')
active = BooleanField('是否已经激活', null=False, blank=False, default=False)
is_admin = BooleanField('是否为企业的管理员', null=False, blank=False, default=False)
is_boss = BooleanField('是否为企业的老板', null=False, blank=False, default=False)
is_hide = BooleanField('是否号码隐藏', null=False, blank=False, default=False)
position = CharField('职位信息', max_length=128, null=False, blank=False, default='')
hired_date = DateTimeField('入职时间', null=True, default=None)
jobnumber = CharField('员工工号', max_length=128, null=False, blank=False, default='', db_index=True)
class Meta:
verbose_name = verbose_name_plural = '用户信息'
2.在settings.py文件中把models.py所在的子应用也要加入配置项,否则orm数据库无法别识别到
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'userdj3.apps.Userdj3Config',#注册子应用
]
3.将模型类在admin.py中注册
from django.contrib import admin
# Register your models here.
from userdj3.models import User
admin.site.register(User)
4.接下来就是数据库迁移的命令
python manage.py migrate # 根据数据库迁移文件生成对应SQL语句并执行 # 初次执行时为了先把默认Django需要的数据库创建出来 python manage.py makemigrations # 创建数据库迁移文件 # 这次执行是为了创建app中的class模型类的迁移文件 python manage.py # 将新添加的模型类迁移文件生成对应SQL并执行,实际创建出来对应的表
这个是Django3.0 迁移的一个问题:
出现这种错误“django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.”
原因:
1).可能是在项目引进pymysql这个驱动;
2).可能是MySQLclient 这个库没有安装 安装命令如下 pip install mysqlclient -i https://pypi.douban.com/simple>
解决原因1 :
项目init关于pymysql驱动给注释文件位置在(项目/init.py)
# import pymysql
# # pymysql.version_info = (1, 3, 13, "final", 0)
# pymysql.install_as_MySQLdb()