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. 洛谷P4315 月下“毛景树”(树剖+线段树)

    传送门 woc这该死的码农题…… 把每一条边转化为它连接的两点中深度较深的那一个,然后就可以用树剖+线段树对路径进行修改了 然后顺便注意在上面这种转化之后,树剖的时候不能搞$LCA$ 然后是几个注意点 ...

  2. JS 数据类型入门与typeof操作符

    标准的数据类型划分: 基本类型: number(数字).string(字符串).undefined.boolean(布尔值).null(空对象) //空对象与非空对象,最大的区别就是不能进行属性操作 ...

  3. web项目tomcat启动url自定义(去掉项目名)

    通常,使用maven构建web项目,启动时默认的访问路径: http://ip:port/项目名 很多时候我们不喜欢这样 访问,我们希望下面的访问方式: http://ip:port 如果是本地的to ...

  4. 【OCR技术系列一】光学字符识别技术介绍

    注:此篇内容主要是综合整理了光学字符识别 和OCR技术系列之一]字符识别技术总览,详情见文末参考文献 什么是 OCR? OCR(Optical Character Recognition,光学字符识别 ...

  5. iOS9导入高德地图报错App Transport Security has blocked...

    App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Te ...

  6. jsp的简介

    https://www.w3cschool.cn/jsp/jsp-intro.html

  7. 199 Binary Tree Right Side View 二叉树的右视图

    给定一棵二叉树,想象自己站在它的右侧,返回从顶部到底部看到的节点值.例如:给定以下二叉树,   1            <--- /   \2     3         <--- \  ...

  8. @GetMapping和@PostMapping 和@RequestMapping区别

    @GetMapping 用于将HTTP GET请求映射到特定处理程序方法的注释. 具体来说,@GetMapping是一个作为快捷方式的组合注释@RequestMapping(method = Requ ...

  9. 2019最新Android面试题

    原文链接:https://blog.csdn.net/wen_haha/article/details/88362469版权声明:本文为博主原创文章,转载请附上博文链接! 前言 金三银四到来了,找工作 ...

  10. spring 整合struts

    1.例子:未被spring整合 struts.xml 的配置文件 <constant name="struts.enable.DynamicMethodInvocation" ...