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官方文档数据库部分。