ORM之创建数据库

  样板:创建表名为UserInfo的表,表的主键可自行写,Django的ORM也可自行创建。

from django.db import models

class UserInfo(models.Model):
#主键会自行创建,也可自己创建,nid为字段
nid = models.AutoField(primary_key=True) #nid为主键
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
#增加列,在增加是,可以定义为空,也可定义为默认值
age = models.IntegerField(null=True)
# age = models.IntegerField(default=1)   #外键将UserGroup表和UserInfo表关联起来。
#外键关联UserGroup表,代表UserGroup的一行数据, 会在UserInfo表里在增加一列,为usergroup_id。 是usergroup的外键,指向UserGroup
usergroup = models.ForeignKey("UserGroup",null=True) class UserGroup(models.Model):
#隐藏id,Django的ORM会加的
title = models.CharField(max_length=32)

  常用数据类型:

    • AutoField:自增字段,生成int类型。可以传入参数主键primary_key=True
    • BigAutoField:自增字段,生成bigint类型,可以传入参数primary_key
    • CharField:字符类型,必须传入长度max_length
    • SmallIntegerField:小整数列
    • IntegerField:整数字段类型
    • PositiveIntegerField:正整数列
    • BigIntegerField:大整数列
    • BooleanField:布尔值列
    • NullBooleanField:可以为空的布尔值列
    • TextField:文本类型
    • IntegerField:整数列
    • FloatField:浮点型
    • DecimalField:十进制小数.参数: 
      • max_digits:小数总长度
      • decimal_places:小数位长度
    • ImageField:字符串,路径保存在数据库,文件上传到指定目录,参数: 
      • upload_to = “” 上传到指定路径
      • storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
      • width_field = None 上传图片的宽度保存的数据库字段名
      • height_field = None 上传图片的高度保存的数据库字段名
    • DateTimeField:日期+时间。格式:YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
    • DateField:日期。格式:YYYY-MM-DD
    • TimeField:时间。格式:HH:MM[:ss[.uuuuuu]]

  常用关键字:

    • null:是否允许为空(例:null = True)
    • default:是否允许为空(例:default = “123”)
    • primary_key:设置为主键(例:primary_key = True)
    • db_column:列名(例:db_column = “address”,默认是跟变量名一样的,使用此关键字后可以修改成你想要的名称)
    • db_index:索引
    • unique:唯一索引
    • unique_for_date:date为唯一索引
    • unique_for_month:month为唯一索引
    • unqieu_for_day:day为唯一索引
    • auto_now:更新时自动更新(例:auto_now = True)
obj = models.DjangoInfo.objects.filter(id=1).first()
obj.password = 123
obj.save() # 只有通过save方法保存的更新,auto_now才起作用
    • auto_now_add:第一次插入数据的时候,自动添加数据,auto_now_add与auto_now一般用于时间的操作,如记录创建的时间和更新的时间
    • choices:用不变动的数据放在内存中从而避免跨表操作
user_type_choices = (
(1,"男"),
(2,"女"),
(3,"人妖")
)
user_type_id = models.IntegerField(choices=user_type_choices,default=1) # 存入的数据是前面的数字,1,2,3
    • blank:是否为空,django admin中使用

---------------- END -------------

  

ORM之创建数据库的更多相关文章

  1. Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍

    创建一个 Django 项目及应用 django-admin startproject orm cd orm python manage.py startapp app01 在 models.py 上 ...

  2. Android使用Sugar ORM创建数据库报no such table:...的解决方法

    在学习使用Android开源框架Sugar ORM时,只是做了开始的创建数据库的操作就报出如下的异常信息 android.database.sqlite.SQLiteException: no suc ...

  3. django ORM创建数据库方法

    1.指定连接pymysql(python3.x) 先配置_init_.py import pymysql pymysql.install_as_MySQLdb() 2.配置连接mysql文件信息 se ...

  4. ORM初识和数据库操作

    ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据库之 ...

  5. django 多数据库时 ORM语句 选择数据库

    多数据库时ORM语句选择数据库 不需要save的操作: 查询(删除的话查询语句后面加一个.delete()即可,修改的话在后面加一个.update()即可): models.表名.objects.us ...

  6. Django中ORM之创建模型

    ORM 数据库与ORM映射关系 表名 --- 类名 字段 --- 属性 表记录 --- 类示例对象 创建表(建立模型) 模型建立如下 class Book(models.Model): title = ...

  7. beego的orm ,用的数据库sqlite3

    测试 beego的orm ,用的数据库sqlite3 1 package main import ( "fmt" "github.com/astaxie/beego/or ...

  8. 用ASP.NET创建数据库

    小白的第一次使用: 程序员写程序,就好比一个物品的慢慢诞生,我们今天的这个例子就可以想象成一个物品慢慢的在编译的过程中,让我们所看到 一.创建我们所测试的项目 1.创建一个简单的带有模型层(Model ...

  9. 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统五 | 完善业务自动创建数据库

    教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 04 | 强化设计方案 05 | 完善业务自动创建数据库 说明 这节来把基础的业务部分完善一下. 因为 IQue ...

随机推荐

  1. bzoj 4078: [Wf2014]Metal Processing Plant【二分+2-SAT+枚举+并查集】

    枚举从大到小s1,二分s2(越大越有可能符合),2-SAT判断,ans取min 思路倒是挺简单的,就是二分的时候出了比较诡异的问题,只能二分s2的值,不能在数组上二分... 有个优化,就是当不是二分图 ...

  2. layui table 详细讲解

     layui.use('table', function () {             var table = layui.table;             /*第一种原始写法*/       ...

  3. Luogu P1233 木棍加工 【贪心/LIS】

    题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的: 第一根棍子的准备时间为1分钟: 如果刚处理 ...

  4. ElasticSearch | centos7 上安装ES

    0 参考博客文章(感谢!!!) [1]  https://www.jianshu.com/p/10949f44ce9c 在linux服务器上安装jdk [2]  https://www.elastic ...

  5. Robot Framework问题汇总...不断更新中

    在实际使用Robot Framework工具过程中,难免会遇到一些问题, 我们将会一一记录下来,以便后来者碰到类似的问题能够快速解决! 安装类问题: ========================= ...

  6. hdu 2063 过山车 (最大匹配 匈牙利算法模板)

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...

  7. Android Dialogs(2)最好用DialogFragment创建Dialog

    Creating a Dialog Fragment You can accomplish a wide variety of dialog designs—including custom layo ...

  8. 转 PHP in_array() 函数

    实例 在数组中搜索值 "Glenn" ,并输出一些文本: <?php $people = array("Bill", "Steve", ...

  9. PHP autoload实践

    本文目的 本文简要的描述了PHP提供的autoload机制,以及在scake中使用实践.用于减少不必要的文件包含,提高php系统性能. 什么是__autoload php是脚本语言,不同于c++只需要 ...

  10. MVP架构模式

    概念解释 MVP是Model(数据) View(界面) Presenter(表现层)的缩写,它是MVC架构的变种,强调Model和View的最大化解耦和单一职责原则 Model:负责数据的来源和封装, ...