Django models模型
Django models模型
一. 所谓Django models模型,是指的对数据库的抽象模型,models在英文中的意思是模型,模板的意思,在这里的意思是通过models,将数据库的借口抽象成python自己的一个类。然后在python Django框架其他代码文件中,可以通过在models代码文件中抽象出来的数据接口模型板模型类对数据库进行一系列的其他操作。
二. Django 对各种数据库都能提供很好的支持,如mysql,oracle,postgresql,sqlite等,diango为这些数据库提供了统一的调用API,我们可以根据自己业务需求选择不同的数据库。也就是缩django调用封装好这些数据库以后,我们对这些数据的操作都是一样的。
MySQL 是 Web 应用中最常用的数据库,现在接下来,我们都将以 Mysql 作为例进行测试学习,如果你没安装 mysql 驱动,可以执行以下命令安装:
sudo pip install mysqlclient
数据库配置:
我们在使用数据库的时候,需要在项目的 settings.py 文件中找到 DATABASES 配置项,配置一下有关数据的配置文件,使我们的django项目能远程连接到我们的数据库。
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'test',
'USER': 'test',
'PASSWORD': 'test123',
'HOST':'localhost',
'PORT':'3306',
}
}
注:我们这里这里添加了中文注释,所以你需要在项目的settings.py 文件头部添加
# -*- coding: UTF-8 -*-。
接下来在我们的项目中,无论是python项目文件还是html项目文件,只要我们使用中文或者使用中文注释,都必须在前面加上# -*- coding: UTF-8 -*-,来支持中文显示。
上面的配置文件中包含了数据库名称和用户的信息,它们与 MySQL 中对应数据库和用户的设置相同。Django 根据这一设置,与 MySQL 中相应的数据库和用户连接起来。
三.django定义规定,只要我们使用models数据库模板,就必须创建一个app实例,经测试,如果不启用实例,models会不起作用而且还会报错。以后这个待有机会再验证一下。
因为我们我们服务器暂时没安装mysql,django默认使用小型数据库sqlite,sqlite与mysql数据库在使用方式上相同,
我们创建一个关于数据库的模型,因为每个模型都是跟数据库相对应的,所以我们可以起一个关于数据的名字:
django-admin.py startapp bookmodels
我们也可以这样命名bookdb_models,这里我们暂时使用bookmodels命名。
目录结构如图所示:
添加代码如下:
# -*- coding: utf-8 -*- //支持中文
from __future__ import unicode_literals
from django.db import models
class bookdb(models.Model):
book_id=models.AutoField(primary_key=True)
book_name = models.CharField(max_length=32)
pub_date=models.DateField()
price=models.DecimalField(max_digits=6,decimal_places=2)
publish=models.CharField(max_length=32)
注:只要使用models就必须加入这句话:
from django.db import models
意思是从django.db文件中引入models数据库模板,而django.db文件中封装了一个models模板类,用来表示和表达数据库,并通过这models类封装了数据库接口,并通过他对数据库进行操作。
注:models在django里面可以理解为就是数据库的意思。
而models中的Model,则代表数据库其中的一个表格模板。我们创建一个表,就需要调用这个Model表格模板。
Django models模型的更多相关文章
- Django models模型(1)
1)使用模型需要在INSTALLED_APPS中注册 2)模型字段(字段类型和字段选项) 1.字段类型 常用: CharField,TextField: 对应字符串对象 DateTimeField和D ...
- Django models模型ORM
一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录----------------->类实例 ...
- 转 Django根据现有数据库,自动生成models模型文件
Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...
- python学习-- Django根据现有数据库,自动生成models模型文件
Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...
- django models 类型整理 version:1.8.3
django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...
- 64、django之模型层(model)--建表、查询、删除基础
要说一个项目最重要的部分是什么那铁定数据了,也就是数据库,这篇就开始带大家走进django关于模型层model的使用,model主要就是操纵数据库不使用sql语句的情况下完成数据库的增删改查.本篇仅带 ...
- 67、django之模型层(model)--查询补充及mookie
本篇导航: F查询与Q查询 cookie 一.F查询与Q查询 1.以Book表为例 class Book(models.Model) : title = models.CharField(max_le ...
- 初识DJango——MTV模型
一.Django—MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻 ...
- 【Django】模型层说明
[Django模型层] 之前大概介绍Django的文章居然写了两篇..这篇是重点关注了Django的模型层来进行学习. ■ 模型定义 众所周知,Django中的模型定义就是定义一个类,其基本结构是这样 ...
随机推荐
- ArcEngine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解
转自 ArcEngine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解 ArcGIS Engine中总调用IFeatureCla ...
- 解决Coldfusion连接MySQL数据库的问题
在连接MySQL时,出现了如下错误: Connections to MySQL Community Server are not supported. Please contact MySQL to ...
- 【转载】Unix设计哲学 & 回车换行八卦 & EOF八卦 & UNIX目录结构八卦
昨天看了这篇文章 <关于Unix哲学> 首先用了两个例子,用风扇吹出空肥皂盒 和 太空铅笔,来说明简单设计也能派上作用吧. Unix哲学,Wikipedia上列出了好几个版本,不同的人有不 ...
- django 简易博客开发 4 comments库使用及ajax支持
首先还是贴一下源代码地址 https://github.com/goodspeedcheng/sblog 上一篇文章我们介绍了静态文件使用以及如何使用from实现对blog的增删改,这篇将介绍如何给 ...
- Could not find leader nimbus
运行storm ui, 然后访问storm ui 的网页的时候,死活跑不起来.后面,根据下面这篇文章的说法, 停止zookeeper 之后,删掉zookeeper 上面的storm 节点, 然后再重启 ...
- win8 metro 自己写摄像头录像项目
这是要求不适用CameraCaptureUI等使用系统自带的 camera UI界面.要求我们自己写调用摄像头摄像的方法,如今我把我的程序贴下: UI界面的程序: <Page x:Class= ...
- map集合排序
默认情况下,HashMap.HashTable.TreeMap.LinkedHashMap的排列顺序比较: package com.per.sdg.demo; import java.util.Has ...
- poj 2585 Window Pains 暴力枚举排列
题意: 在4*4的格子中有9个窗体,窗体会覆盖它之下的窗体,问是否存在一个窗体放置的顺序使得最后的结果与输入同样. 分析: 在数据规模较小且不须要剪枝的情况下能够暴力(思路清晰代码简单),暴力一般分为 ...
- 屏蔽微软的SignalR
去年采用ASP.NET MVC开发项目,在谷歌浏览器里调试页面的时候,发现项目在不停地请求数据,链接很奇怪: http://localhost:63004/654c2dd725bb4401b8fc0c ...
- Hackrank Equal DP
Christy is interning at HackerRank. One day she has to distribute some chocolates to her colleagues. ...