Django中的数据库操作

7 篇文章 0 订阅
5 篇文章 0 订阅

Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用。

在pycharm中新建一个Django项目,其将自带sqlite数据库,如果我们使用它,则默认不用进行任何修改,其配置在settings.py内可以查看,如下为默认配置代码:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

    }
}

当然我们也可以配置使用其他类型的数据库,如mysql,配置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'seproject',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

name填写数据库名,user,password则填写数据库用户名和密码即可,当然在django中使用mysql需要安装python-mysql,安装包可在官网找到,其他配置等及简单使用可移步 django+mysql的简单开发教程

本文将主要介绍django中的数据库操作,以下面的数据库模型为例:

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()
    city = models.CharField(max_length=100)

    def __unicode__(self):
        return self.name
  • 新建一个对象的方法:
 Person.objects.create(name="yf999573",age=20,city="beijing")

 p = Person(name="yf999573", age=20,city="xian")
 p.save()

 p = Person(name="yf999573")
 p.age = 20
 p.city = xian
 p.save()
  • 获取对象的方法:
Person.objects.all()
Person.objects.get(name=name)
Person.objects.filter(name="abc")

关于get与filter用法的区别及实例可移步:django+mysql中的get和filter操作
filter是找出满足条件的,当然也有排除符合某条件的,如下:

Person.objects.exclude(name="yf") 

当然获取对象还可以使用关键字进行语法限定,如:iexact(忽略大小写)、regex(正则表达式查询)、contains(包含)等,试举两例:

Person.objects.filter(name__iexact="yf") # 名称为 yf 但是不区分大小写,可以找到YF,yF,Yf,yf这些都符合条件
Person.objects.filter(name__contains="yf") # 名称中包含 "yf"的人
Person.objects.filter(name__regex="^abc") # 正则表达式查询
  • 删除对象的方法:
#删除age=20的所有对象
Person.objects.filter(age=20).delete()
#删除所有
Person.objects.all().delete()
  • 更新对象的方法:
Person.objects.filter(age=27).update(city="nanjing")

更多相关方法可以参考django官方文档数据库部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值