文档章节

Python web项目(2) 通过类创建表

猿神出窍
 猿神出窍
发布于 2017/02/27 18:02
字数 541
阅读 20
收藏 0
点赞 0
评论 0

 Python 描述类

from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

每个模型相当于单个数据库表,每个属性也是这个表中的一个字段。 属性名就是字段名,它的类型(例如CharField )相当于数据库的字段类型 (例如 varchar )。例如, Publisher 模块等同于下面这张表(用PostgreSQL的 CREATE TABLE 语法描述):

CREATE TABLE "books_publisher" (
    "id" serial NOT NULL PRIMARY KEY,
    "name" varchar(30) NOT NULL,
    "address" varchar(50) NOT NULL,
    "city" varchar(60) NOT NULL,
    "state_province" varchar(30) NOT NULL,
    "country" varchar(50) NOT NULL,
    "website" varchar(200) NOT NULL
);

“每个数据库表对应一个类”这条规则的例外情况是多对多关系。 在我们的范例模型中, Book 有一个多对多字段 叫做 authors 。 该字段表明一本书籍有一个或多个作者,但 Book 数据库表却并没有 authors 字段。 相反,Django创建了一个额外的表(多对多连接表)来处理书籍和作者之间的映射关系。

 注意

我们并没有显式地为这些模型定义任何主键。 除非你单独指明,
否则Django会自动为每个模型生成一个自增长的整数主键字段每个Django模型都要求有单独的主键id

完成这些代码之后,现在让我们来在数据库中创建这些表:

1 激这些模型

编辑 settings.py 文件, 找到 INSTALLED_APPS 设置
注释掉四个默认的配置,同时,注释掉MIDDLEWARE_CLASSES的默认设置条目
 然后,添加`` ‘mysite.books’`` 到`` INSTALLED_APPS`` 的末尾

说明:'mysite.books'指示我们正在编写的books app

2 创建数据表:

#验证有效性
python manage.py validate
#创建
python manage.py sqlall books 
 或者
python manage.py startapp books
#记录改变
python manage.py makemigrations
#生成数据表
python manager.py migrate

说明:

自动生成的表名是app名称( books )和模型的小写名称 ( publisher , book , author )的组合

字段的数据类型设置:参考 http://www.mamicode.com/info-detail-1425942.html

© 著作权归作者所有

共有 人打赏支持
猿神出窍
粉丝 15
博文 161
码字总数 57015
作品 0
沙坪坝
项目经理
python3 django配置数据库(mysql)

python3 django配置数据库(mysql) python3 下的mysql驱动 django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.x版本时,django连接mysql的方法 1、使用p...

代金券优惠 ⋅ 04/24 ⋅ 0

用MaxCompute Studio开发Python UDF(附采坑记录)

1.环境 系统:MacOS 系统自带Python版本(/usr/bin/python):2.7.10 Anaconda Python版本:2.7.14 Maxcompute Studio版本: 2.9.1 2.安装Python|Pyodps|Python插件 MaxCompute studio能支持用......

watercat ⋅ 05/24 ⋅ 0

实战(Chapter2):django实现在线教育平台之数据迁移

上节中我们已经讲解了教育平台项目的需求及数据设计,从本节开始,我们正式编码: 1. 项目创建 在 django搭建虚拟环境-virtualenv 这一篇文章中,我们讲解了mac上如何使用virtualenv的目的及...

fuckCoding ⋅ 2017/12/08 ⋅ 0

《Python从小白到大牛》第3章 第一个Python程序

本章以HelloWorld作为切入点,介绍如何编写和运行Python程序代码。 运行Python程序主要有两种方式: 1.交互式方式运行 2.文件方式运行 本章介绍这两种运行方式实现HelloWorld程序。 使用P...

tony关东升 ⋅ 06/20 ⋅ 0

Django入门指南-第1部分(环境搭建)

前言 今天我将开始一个关于 Django 基础知识的全新系列教程。这是一个开始学习 Django 的完整入门指南。教程材料一共会被分为七个部分。我们将从安装,开发环境的准备,模型,视图,模板,U...

刘志军 ⋅ 03/08 ⋅ 0

大数据分析挖掘学习方向?数据分析师的就业前景怎么样?

加米谷数据分析挖掘课程明细,从理论到云端实操环境到项目实战,手把手教您从0掌握数据分析与挖掘技术,带您走进数据时代。 第一阶段(python基础) python入门:1、Python版本特性介绍2、P...

加米谷大数据 ⋅ 04/17 ⋅ 0

Django-ORM数据库操作

背景 Django框架功能齐全自带数据库操作功能,由于工作中设计巨量的api接口,需要一个很好的web后端服务框架,Django给了莫大的帮助。本文主要介绍Django的ORM框架 我们一般对数据库的使用的...

武耀文 ⋅ 06/12 ⋅ 0

pycharm平台下的Django教程

本文面向:有python基础,刚接触web框架的初学者。   环境:windows7   python3.5.1   pycharm专业版   Django 1.10版  pip3 一、Django简介   百度百科:开放源代码的Web应用框...

yzy121403725 ⋅ 05/17 ⋅ 0

python编写mysql类实现mysql的操作

前言 我们都知道利用python实现mysql的操作是件很简单的事情,只需要熟练使用MySQLdb模块就能实现mysql的增删改查操作。 为了更好地整合mysql的操作,使用python的类讲mysql的操作整合到一起...

icenycmh ⋅ 05/21 ⋅ 0

django + etcd + confd配置管理平台

环境 CentOS 6/7 x64 Python: 2.7.6 Etcd: 3.2.18 Confd: 0.16.0 Nginx: 1.12.1 效果演示 一、拓扑图: 二、涉及软件 etcd:分布式 KV 存储系统,一般用于共享配置和服务注册和发现。是 ...

xjtuhit ⋅ 前天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java集合类总结笔记

一、集合类的层次关系 主要容器集合类的特点: ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除的有序序列 ArrayDeque 一种用循环数组实现的...

edwardGe ⋅ 4分钟前 ⋅ 0

spring RMI远程调用

RMI https://www.cnblogs.com/wdh1995/p/6792407.html

BobwithB ⋅ 9分钟前 ⋅ 0

Jenkins实践2 之基本配置

1 插件管理 系统管理->插件管理 在可选插件中可以自主安装插件 2 管理用户 系统管理->管理用户->新建用户 3 安全配置 系统管理->全局安全配置 授权策略 选择安全矩阵 然后添加现有的用户,赋...

晨猫 ⋅ 9分钟前 ⋅ 0

c++智能指针

1、是一种泛型类,针对指针类型的泛型类,会保存指针 2、重载了符号 *和-> 对智能指针使用这两个符号,相当于对保存的泛型使用这两个符号 3、当智能指针引用计数为0时,会去释放指针指向的资...

国仔饼 ⋅ 10分钟前 ⋅ 0

Spring Boot错误处理机制

1)、SpringBoot默认的错误处理机制 默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAut...

小致dad ⋅ 12分钟前 ⋅ 0

ftp连接不上的终极办法 SFTP

假如FTP由于各种原因就是连不上,那么用SFTP协议吧,使用登录服务器的账号密码。

sskill ⋅ 16分钟前 ⋅ 0

Unity 围绕旋转角度限制(Transform.RotateAround)

在 Unity 中可以利用 Transform.RotateAround 围绕指定物体进行旋转,但某些情况下可能需要对旋转角度进行控制。我是先计算出预设角度大小,然后判断是否在限定角度范围内是则进行旋转。 相关...

大轩 ⋅ 17分钟前 ⋅ 0

阿里沙箱环境支付宝测试demo

阿里支付宝支付和微信支付,包括:阿里沙箱环境支付宝测试demo,支付宝支付整合到spring+springmvc+mybatis环境和微信整合到如上环境,功能非常齐全,只需要修改对应的配置文件即可,帮助文档...

码代码的小司机 ⋅ 20分钟前 ⋅ 0

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 37分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 41分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部