Django支持多种数据库,如PostgreSQL、MySQL、SQLite、Oracle。Django模型提供了统一的接口实现数据的CURD操作,所以可以很方便地切换数据库。
下面将介绍Django model的使用,笔者以MySQL数据库为例:
步骤↓
- 安装mysqlclient,用于Django与数据库的交互:
ubuntu系统如下:
sudo apt-get install libmysql-dev sudo apt-get install libmysqlclient-dev sudo apt-get install python-dev sudo pip install mysqlclient
windows系统如下:(1) https://www.lfd.uci.edu/~gohlke/pythonlibs/# 下载对应python版本且对应操作系统位数的版本安装包,如python 2.7,64位操作系统下载:mysqlclient-1.3.7-cp27-none-win_amd64.zip
(2) 解压安装包,进入目录打开cmd,使用pip install命令安装:
pip install mysqlclient-1.3.7-cp27-none-win_amd64
注:若没有安装pip请自行安装。 - 配置数据库参数:打开Django项目中的settings.py,做如下配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django 'NAME': 'ds', #数据库名 'USER':'root', #数据库用户 'PASSWORD': '1234', #数据库密码 'HOST':'localhost', #数据库服务器IP 'PORT':'3306', #端口 } }
- 创建app:进入项目根目录,执行:
django-admin.py startapp TestModel
windows系统执行:django-admin startapp TestModel
在settings.py中做如下配置,将刚刚建好的app TestModel 配置进项目中:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel', # 添加此项 )
HelloWorld |-- TestModel | |-- __init__.py | |-- admin.py | |-- models.py | |-- tests.py | `-- views.py
- 建立模型:打开models.py,编写一个模型:
class Movie(models.Model): moviename = models.CharField('电影名', max_length=100) createtime = models.DateTimeField('发表时间', auto_now_add=True) updatetime = models.DateTimeField('更改时间', auto_now=True) publishtime = models.CharField('发布时间', max_length=10, blank=True) types = models.CharField('类型', max_length=200, blank=True) area = models.CharField('地区', max_length=200, blank=True) language = models.CharField('语言', max_length=200, blank=True) def __unicode__(self): return self.moviename class Outsource(models.Model): num = models.IntegerField('第几集',default=1) outfilelink = models.CharField('外部文件链接',max_length=500) movie = models.ForeignKey(Movie,verbose_name="电影") def __unicode__(self): return self.num
说明:我们可以在models.py中通过建立一个集成model.Model的类来创建模型。Django可以根据models自动在数据库中建表,属性名即为表的字段名,models.IntegerField等表示字段的数据类型,default参数表示默认值,第一个参数可以显示在Django admin的表单中,我们可以理解为注释,但是Django不会真的给数据库表中添加注释。models.ForeignKey可以指定外键,一部电视剧有好多级,所以在资源表中使用剧集作为外键,除此之外Django模型还支持ManyToMany、OneToOne等关系。blank=True指定字段可以为空,默认不可以。null=True表示Django会使用null填充空字段,默认不允许为空。max_length指定字段长度。 - 创建migrations并创建表结构:
$ python manage.py migrate # 创建表结构 $ python manage.py makemigrations TestModel # 生成migrations $ python manage.py migrate TestModel # 创建表结构
说明:可以在app目录中看到migrations包,它会记录每次的变更,我们可以打开里边的文件阅读它。打开数据库,我们可以看到表结构已经构建好。注:如果对模型进行了修改,执行以上命令,Django会自动修改表结构,且不会清空表中已存在的数据,十分方便。 - 对数据进行CURD操作:(这里我贴一些零散的代码)
movie = get_object_or_404(Movie, id=id) #这个方法用在views中,若无记录会返回404 movie.playcount += 1 movie.save() #若数据库中存在数据,修改。若不存在,插入。相当于SQL中的merge语句 n = movie.avaliblesum=movie.outsource_set.count() #返回该电视剧一共有多少集,参看上边的模型定义例子 print n for outsource in movie.outsource_set.all(): ##返回该电视剧的每一集 print outsource.outfilelink #过滤器,相当于where语句,以下意思是(where weight>=5 and classkey=#{key} order by createtime desc limit 0 12) movies = Movie.objects.filter(weight__gte=5).filter(classkey=key).order_by('-createtime')[:12] #以下意思是(where keyword like '%#{key}%' or moviename like '%#{key}%' ),若要使用'或',必须使用Q对象 allmovies = Movie.objects.filter(Q(keyword__icontains=key) | Q(moviename__icontains=key)) # 删除id=1的数据 # Test.objects.filter(id=1).delete() # 删除所有数据 # Test.objects.all().delete() # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE test1 = Test.objects.get(id=1) test1.name = '222' test1.save() # 另外一种方式 #Test.objects.filter(id=1).update(name='222') # 修改所有的列 # Test.objects.all().update(name='222') # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM list = Test.objects.all() # 获取单个对象 response3 = Test.objects.get(id=1)
注:此处只是举了一些常用例子,若要详细了解,请看官方文档。Django 模型非常强大,可以代替大部分常用的原生SQL语句。当然使用Django也支持引入原生SQL语句,此处不介绍。且使用Django也并非必须要使用Django model,Django是一个低耦合框架,它的每一个模块都可以按需求和喜好取舍。
相关推荐
本资源“Django-Pizza-13.11.11.tar.gz”就是一个针对Python后端开发的特殊库——Django-Pizza的特定版本。Django-Pizza是基于Django框架构建的一个应用,它提供了许多用于构建Web应用的实用功能和组件,旨在简化...
无论是想要从零开始学习Django还是希望深入掌握其在电子商务领域应用的开发者,都能从中获益匪浅。 #### 五、结语 《Django 1.2 电子商务》不仅是一本介绍Django在电子商务领域应用的书籍,更是一部指导开发者如何...
Django是一个开源的Web框架,由Python编写,采用了MTV(模型 Model、模板 Template、视图 View)的框架模式,让Web开发变得更加快捷高效。Django的官方文档《The Django Book 2.0 中文版》详细地介绍了如何使用...
它内置了大量便捷的功能,如对象关系映射(ORM)、用户认证、内容管理等,使得开发者可以不必从零开始搭建系统框架,而是专注于功能的实现。在本项目中,Django框架主要负责处理后端逻辑,如用户认证、数据处理、API...
- **从零开始**:适合完全没有经验的新手,详细介绍如何一步步构建一个Django应用。 - **概览**:对Django的整体架构进行概览性描述,帮助用户理解Django的核心设计理念。 #### 二、安装与教程 - **安装**:详细...
本文将深入探讨如何使用Python的Django框架从零开始构建一个全栈博客应用——"BlogApp-Django"。该应用涵盖了前端的HTML、CSS和JavaScript技术,以及后端的Django核心功能,使得用户能够注册账户并发布文章。这将是...
- **用户数据集**:系统内含预设的用户数据集,简化了用户信息管理,避免了从零开始构建数据库的复杂性。 2. **图书管理**: - **图书信息管理**:系统维护了一个图书数据集,包含每本书的书名、作者、出版社、...
【django-site】是一个基于Python开发的Web应用框架——Django中的一个项目模板,它为创建一个新的Django站点提供了快速入门的基础。Django是强大的、高级的、可重用的Web框架,它遵循“DRY”(Don't Repeat ...
在这个"Mysite"教程中,我们将学习如何从零开始搭建一个完整的Django项目。 首先,让我们了解Django的基本概念。Django遵循MVT(Model-View-Template)架构模式,即模型(Model)负责数据管理,视图(View)处理...