ORM之创建数据库
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之创建数据库的更多相关文章
- Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
创建一个 Django 项目及应用 django-admin startproject orm cd orm python manage.py startapp app01 在 models.py 上 ...
- Android使用Sugar ORM创建数据库报no such table:...的解决方法
在学习使用Android开源框架Sugar ORM时,只是做了开始的创建数据库的操作就报出如下的异常信息 android.database.sqlite.SQLiteException: no suc ...
- django ORM创建数据库方法
1.指定连接pymysql(python3.x) 先配置_init_.py import pymysql pymysql.install_as_MySQLdb() 2.配置连接mysql文件信息 se ...
- ORM初识和数据库操作
ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据库之 ...
- django 多数据库时 ORM语句 选择数据库
多数据库时ORM语句选择数据库 不需要save的操作: 查询(删除的话查询语句后面加一个.delete()即可,修改的话在后面加一个.update()即可): models.表名.objects.us ...
- Django中ORM之创建模型
ORM 数据库与ORM映射关系 表名 --- 类名 字段 --- 属性 表记录 --- 类示例对象 创建表(建立模型) 模型建立如下 class Book(models.Model): title = ...
- beego的orm ,用的数据库sqlite3
测试 beego的orm ,用的数据库sqlite3 1 package main import ( "fmt" "github.com/astaxie/beego/or ...
- 用ASP.NET创建数据库
小白的第一次使用: 程序员写程序,就好比一个物品的慢慢诞生,我们今天的这个例子就可以想象成一个物品慢慢的在编译的过程中,让我们所看到 一.创建我们所测试的项目 1.创建一个简单的带有模型层(Model ...
- 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统五 | 完善业务自动创建数据库
教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 04 | 强化设计方案 05 | 完善业务自动创建数据库 说明 这节来把基础的业务部分完善一下. 因为 IQue ...
随机推荐
- react hooks 全面转换攻略(三) 全局存储解决方案
针对 react hooks 的新版本解决方案 一.redux维持原方案 若想要无缝使用原来的 redux,和其配套的中间件 promise,thunk,saga 等等的话 可以使用 redux-re ...
- python服务之flask
前言: 关于python flask 的介绍.指导.案例,网络上比比皆是.这里参考官网:http://www.pythondoc.com/flask/index.html 你可能不知道的flask服务 ...
- 暑期训练狂刷系列——Lightoj 1084 - Winter bfs
题目连接: http://www.lightoj.com/volume_showproblem.php?problem=1084 题目大意: 有n个点在一条以零为起点的坐标轴上,每个点最多可以移动k, ...
- ACM牛人博客
ACM牛人博客 kuangbin kuangbin(新) wuyiqi wuyiqi(新) ACM!荣耀之路! 九野的博客 传说中的ACM大牛!!! read more
- Linux环境下MySQL5.7安装记录
参考文档 <Installing MySQL on Unix/Linux Using Generic Binaries> https://dev.mysql.com/doc/refman/ ...
- Windowsforms 中对话框,流、文件操作
对话框: 1.颜色选择控件——ColorDialog //显示颜色选择器 colorDialog1.ShowDialog(); //把取到的颜色赋值给panel panel1.BackColor = ...
- Tomcat源码分析----eclipse中搭建源码环境
前提:JDK,至少1.7,ant,要设置ANT_HOME环境变量,需要再classpath中增加ant的lib目录,在path变量中增加ant的bin目录 1.官网下载tomcat源码包:apache ...
- [BZOJ1009][HNOI2008]GT考试 DP+矩阵快速幂+KMP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1009 我们令$dp(i,j)$表示已经填了$i$位,而且后缀与不幸运数字匹配了$j$位,那 ...
- pandas之groupby分组与pivot_table透视表
zhuanzi: https://blog.csdn.net/qq_33689414/article/details/78973267 pandas之groupby分组与pivot_table透视表 ...
- 关于Android软键盘把布局顶上去的问题(一)
最近接触到了一个登陆页面,布局最上面显示的是一个波纹的view,中间显示账号和密码的EditText,紧接着还有一个Button: 希望:点击EditText时,软键盘不能把波纹的view顶出去,也不 ...