Django中使用ORM

一、ORM概念

ORM,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换  。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。

简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

ORM在业务逻辑层和数据库层之间充当了桥梁的作用。

二、ORM的优缺点 


  ORM的缺点是会牺牲程序的执行效率和会固定思维模式。 
  从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。 

  在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。
   在对对象做持久化时,ORM一般会持久化所有的属性,有时,这是不希望的。 
  但ORM是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。

三、Django中的ORM

3.1、Django中使用MySQL数据库

 

3.1.1、映射关系

 

ORM                      DB

类                       表

对象                     数据行

属性                     字段

关系有一对一一对多多对多

3.1.2、使用ORM

 

在Django中使用ORM

1. 手动创建数据库

2. 在settings.py里面,配置数据库的连接信息

DATABASES = {

                     'default': {

                        'ENGINE': 'django.db.backends.mysql',

                        'NAME': 数据库名,

                        'HOST': IP,

                        'PORT': 3306,

                        'USER': 用户名,

                        'PASSWORD': 密码,

                     }

                 }

3. 在项目/__init__.py告诉Django用pymysql模块代替MySQLdb来连接MySQL数据库

   import pymysql

   pymysql.install_as_MySQLdb()

4. 在app/models.py里面定义类

        class Person(models.Model):

             first_name = models.CharField(max_length=30)

         last_name = models.CharField(max_length=30)

 

5. 执行两个命令

   1. python3 manage.py makemigrations   --> 把models.py里面的更改记录下来

   2. python3 manage.py migrate  --> 把更改翻译成SQL语句,去数据库执行

 

3.2、Django中ORM常用的字段

Autofield

int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。

IntegerField

整数类型

Charfield

字符类型,必须提供max_length参数

DateField

日期类型 格式:YYYY-MM-DD

DateTimeField

日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ

 

3.3、Django中ORM常用的字段参数

 

null

字段为空

unique

unique=true 字段唯一

default

设置默认值

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值