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. magento 添加事件

    首先是配置文件config.xml里的配置 <checkout_cart_save_after> /*事件名字*/ <observers> <deal> /*模块名 ...

  2. ORA-14074: partition bound must collate higher than that of the last partition

    There is a error happen in crotab: CREATE parttion report ORA-14074:ORA-14074: partition bound must ...

  3. 450 Delete Node in a BST 删除二叉搜索树中的结点

    详见:https://leetcode.com/problems/delete-node-in-a-bst/description/ C++: /** * Definition for a binar ...

  4. 奇葩问题: lsattr -d /data 显示:----------I--e- /data/

    奇葩问题 lsattr -d /data 显示:----------I--e- /data/ 问题影响: 其他权限中I(大写i) 目录下不能删除文件,不能添加文件 ================== ...

  5. 给ambari集群里的kafka安装基于web的kafka管理工具Kafka-manager(图文详解)

    不多说,直接上干货! 参考博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口 ...

  6. 快速体验openstack-用devstack安装openstack

    官网安装说明: --2014年11月15日14:14:21 安装环境:Ubuntu12.04,安装官网的说明遇到了小问题,记录在这里 --http://docs.openstack.org/devel ...

  7. c语言-依赖倒转

    当一个文件(aa.c文件)依赖于头文件(bb.h)时,如果bb.c编译之后形成的bb.o文件重新编译后,aa.o的文件不需要重新编译 aa.c文件: bb.h文件:对bb.c文件进行声明 bb.c文件 ...

  8. ES5之变量

    什么是变量:存放物体的一个容器,以便后续利用该容器存放的物体. 变量的声明及赋值: 声明变量关键字var; 变量名的规范:变量名由英文字母.数字.下划线.美元符号组成,但是首字母只能是英文字母.下划线 ...

  9. 【CSS】3种CSS方法设置元素垂直水平居中

    1. 宽高固定 设置要水平垂直居中的 div 的 position 为 absolute,left:50%; margin-left为负的这个元素宽度的一半,同理,top:50%;margin-top ...

  10. [转]Sublime Text操作

    原文地址:http://www.madongdong.me/sublime-text3%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/ 作者:马东东 前言(Prologue) ...