Django models ORM基础操作--白话聊Django系列

  上次我们讲完了views视图,那我们这次来看一下Django强大的ORM,可以这么说,你不懂Django的ORM,你就不懂Django,那废话不多说  

  ORM又称关系对象映射,在ORM里,一张表就是一个类,一行数据就是类的一个对象

  在Django中遵循code first的原则,即:根据代码中定义的类来自动生成数据库表

  利用ORM来实现定义表,以及对表进行操作

  注意:在连接数据库上,Django默认是连接MySQLdb的,但是在python3中,不是很完美的支持这个模块,所以创建的Django项目时,如果python版本为3时,则要在项目名下的init文件里加入下面的代码,如果运行过程中,报错no module named MySQLdb,那就是这个原因了

import pymysql
pymysql.install_as_MySQLdb()

  另外,Django里的连接方式默认为连接sqllite,如果想切换成其他的连接方式,比如连接MySQL,只需要在配置文件里settings,注释之前的,重新配置新的即可

#默认数据库连接
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

#重新配置数据库连接
DATABASES = {
    'default': {
        #MySQL的数据库引擎
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'django_com',
        'USER':'root',
        'PASSWORD':'',

    }
}

   注意:NAME数据库的名字,在mysql连接前,该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite则是在创建项目时自动创建的

 

  pycharm也支持表格显示数据库数据

  为了能更好的查看数据同步,我们可以直接用pycharm查看的,跳过第三方数据库操作软件Navicate,只需要在pycharm安装相应的数据库驱动即可,具体做法如下:

  右侧栏-->Database--> + -->Data Source-->选择数据库驱动

  点击download后,设置后数据名和用户名和密码,点击apply和ok,就可以了,直接可以在pycharm点击查看数据库表,如果你用的是sqlite数据库就更简单了,直接将sqlite拖动到Database就可以了

 

  前奏说多了,接下来我看看怎么用ORM实现对数据的增删改查

  首先我们必须创建表,那就要定义表类了,并且继承某个类,在Django中的要继承的类是models.Model

class UserInfo(models.Model):
    name = models.CharField(max_length=24)
    age = models.IntegerField()
    sex = models.BooleanField(max_length=1,choices=((0,'男'),(1,'女'),))
    email = models.EmailField()
    home_adr = models.CharField(max_length=56)

    def __str__(self):
        return self.name

   Django提供很多的字段,这些字段辅助form表单验证

  接下来的是操作数据

 

  增:create   和   对象.save

def create_data1(**kwargs):
    ret = models.Author.objects.create(**kwargs)

def create_data2(**kwargs):
    ob = models.Author(**kwargs)
    ob.save()

  删:delete

def delete_data(**kwargs):
    models.Author.objects.filter(**kwargs).delete()

  改:update

def update_data(**kwargs):
    models.Author.objects.filter(**kwargs).update(name='laoliu')

   查:all  first  get  filter  values

#取所有
def find_data_all(**kwargs):
    r = models.UserInfo.objects.all()
    return r

#取某一个,获取不到报错
def find_data_one(**kwargs):
    r = models.UserInfo.objects.get(**kwargs)
    return r

#取第一个
def find_data_first(**kwargs):
    r = models.UserInfo.objects.first()
    return r

#筛选条件查,多个对象
def find_data_filter(**kwargs):
    r = models.UserInfo.objects.filter(**kwargs)
    return r

#筛选字段查,多个对象
def find_data_value(*args):
    r = models.UserInfo.objects.values(*args)
    return r

 

posted @ 2017-07-20 22:14  财经知识狂魔  阅读(355)  评论(0编辑  收藏  举报