龙空技术网

Django应用:作为一个ORM框架,它是怎么与数据库配合的

程序员的苦咖啡 344

前言:

而今兄弟们对“django框架orm”都比较珍视,姐妹们都需要了解一些“django框架orm”的相关内容。那么小编同时在网摘上网罗了一些有关“django框架orm””的相关文章,希望同学们能喜欢,姐妹们一起来学习一下吧!

在前面的讲解中,可能明察秋毫的伙伴们发现了一个文件:db.sqlite3。

不知这个文件是何时诞生的,在myschools这个项目创建的时候还没有这个文件,没错,这个文件是在我们项目启动的时候生成的,因为折合Django项目中的配置有关,也就是settings.py文件中关于数据库的配置,默认配置是使用sqlite,一个内嵌的数据库系统:

这是开发Django应用默认的数据库配置,因为SQLite包含在Python中,因此您无需安装任何其他东西来支持您的数据库,这对于练习Django应用开发来说,简单又方便,当然在实际的应用开发中,也可以支持postgresql('django.db.backends.postgresql'),mysql('django.db.backends.mysql'),oracle('django.db.backends.oracle')等其他数据库系统,我们公司在开发中用的最多的就是pg数据库和mysql。下图是一个pg数据库的配置:

其中ENGINE是选择的数据库引擎,NAME是数据库名,USER是数据库用户,PASSWORD是对应用户的密码,HOST和PORT是连接数据库的主机和端口号,OPTIONS是配置一些其他参数。

另外在settings.py文件中有INSTALLED_APPS参数的配置,这是这个项目中目前需要安装的app应用,除了我们自己编写的schools应用,其他都是Django框架自带的,这些app都会被映射到数据库中,前提是这些app中包含编写好的实体类。

django.contrib.admin - 管理站点,下面的内容管理系统的讲解会用到这个,特别实用,除了界面有些丑。

django.contrib.auth - 认证系统。

django.contrib.contenttypes - 内容类型的框架。

django.contrib.sessions - 会话框架。

django.contrib.messages - 消息传递框架。

django.contrib.staticfiles - 用于管理静态文件的框架。

schools.apps.SchoolsConfig - 这个就是我们创建的app应用,也要加到这个里面。

我们使用两个命令来把我们项目中的实体类和数据库中的表关联起来,第一个命令就是makemigrations,这个命令是生成一些Django能执行的一些数据库脚本,第二个命令是migrate,这个命令的目的是执行第一步生成的数据库脚本,如下图:

我们用数据库客户端工具Navicat,连接一下数据库,查看一下Django创建的这些表:

这些表都是Django框架内自带的一些模型映射的表,我们要想构建自己的表,需要编写自己的模型,也就是实体类,因为Django是一个ORM框架,是通过操作实体类来操作数据库的,这就有些像JavaEE开发中的Hibernate框架。下面在schools/models.py中,来编写我们的实体类吧!

建立的模型很简单,一个班级模型,一个学生模型,我们执行makemigrations命令,生成数据库执行脚本:

执行命令migrate,让这个Django能识别的数据库脚本应用到数据库中:

数据库中也就增加了两张表:schools_grade和schools_student,表的名称如果没在模型中配置的话,默认是app应用的名字加上下划线,再加上模型的名字:

可以看出,如果模型中没有声明的话,Django会为我们自动加上id这一属性,并且是自增的。外键字段是记录了关联模型的主键值,我们每次更改模型之后,都要运行makemigrations和migrate命令进行数据库迁移和映射,这样我们编写的模型才真正和数据库中的表对应起来,通过Django中的一些语法,操作模型来操作数据库的增删改查,应用起来其乐融融,动手试试吧!

标签: #django框架orm