import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'pmms', # 数据库名称
'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1
'PORT': 3306, # 端口
'USER': 'root', # 数据库用户名
'PASSWORD': 'BuNengGaoSuNi', # 数据库密码
}
}
ORM(Object Relational Mapping)即对象关系映射,它是一种程序技术,允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库。
class AbilityScore(models.Model):
index = models.AutoField("Index", auto_created=True, primary_key=True)
employee_id = models.CharField("EmployeeID", max_length=10)
ability_id = models.IntegerField("AbilityID")
approved_value = models.CharField("ApprovedValue", max_length=2)
upcoming_value = models.CharField("UpcomingValue", max_length=2)
create_time = models.DateTimeField("CreateTime", auto_now_add=True)
update_time = models.DateTimeField("UpdateTime", auto_now=True)
class Meta:
db_table = 'ability_score'
使用内部Meta类来给模型赋予属性,Meta类下有很多内建的类属性,可对模型来做一些控制。
用于控制表的属性,如表名。改了Meta类也要makemigrations migrate
但凡模型类发生变化都要makemigrations migrate
class Meta:
db_table = 'ability_score'
migration 文件不要在代码里追踪。
ORM CRUD核心->模型类自带的管理器对象
管理器对象:每个继承自Models.Model的模型类,都会有一个objects对象同样被继承下来,即管理器对象。
数据库的增删改查可以通过模型的管理器实现
class MyModel(models.Model):
...
MyModel.objects.create(...) # objects 即管理器对象
在Django提供了一个交互式的操作项目叫Django Shell它能够在交互模式用项目工程的代码(如数据的连接配置和已有的model类),加载当前的项目环境,执行相应的操作。
利用Django Shell可以代替编写view的代码来进行直接操作
注意:项目代码发生变化时,重新进入Django Shell
启动方式:python3 manage.py shell
python.exe .\manage.py shell
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:23:07) [MSC v.1927 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
Django ORM使用一种直观的方式把数据库表中的数据表示成Python对象。
创建数据中每一条记录就是创建一个数据对象
直接使用管理器对象objects 进行create
MyModel.objects.create(属性1=值1, 属性2=值2, ...)
models.AbilityScore.objects.create(employee_id=employee_id, ability_id=ability_id,
upcoming_value=upcoming_value)
成功:返回创建好的实体对象
失败:抛出异常
创建MyModel实例对象,并调用save()进行保存。
obj = MyModel(属性1=值1,属性2=值2)
obj.属性=值
obj.save()