django操作数据库 ORM
一,数据库连接
创建类
a. 在models.py中先写类
from django.db import models
# 表名是app01_userinfo
class UserInfo(models.Model):
# id列,自增,主键
# 用户名列,字符串类型,指定长度
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
b. 注册APP,settings中加入app名称
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
c,选定数据库 用sqlite3还是mysql
DATABASES
=
{
'default'
: {
'ENGINE'
:
'django.db.backends.mysql'
,
'NAME'
:
'dbname'
,
'USER'
:
'root'
,
'PASSWORD'
:
'xxx'
,
'HOST'
: '',
'PORT'
: '',
}
}
d. 执行命令,
python manage.py makemigrations
python manage.py migrate
********** 注意 ***********
Django默认使用MySQLdb模块链接MySQL,也可安装mysqlclient,https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
import pymysql
pymysql.install_as_MySQLdb()
二,数据库增删查改
models: from django.db import models # Create your models here. class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=64) views: from cmbd import models
def orm(request): #创建 插入行
#第一种方法
# models.userinfo.objects.create(username="root",password=123)
#第二种方法
# dic = {"username":"eric","password":123}
# models.userinfo.objects.create(**dic)
#第三种方法
# obj = models.userinfo(username="alex",password=666)
# obj.save() #查询
#result = models.userinfo.objects.all() #返回结果是django内置类,相当于结果列表,查询所有
# result = models.userinfo.objects.filter(username="root",password='123') #按条件与查询,后面还可跟.first() .last() .count()第一个最后一个,共几个
# for row in result:
# print(row.id,row.username,row.password) #更新
# models.userinfo.objects.update(password=669) #更新所有列的密码
# models.userinfo.objects.filter(id=1).update(password=69) #按条件更新 #删除
# models.userinfo.objects.filter(id=2).delete() #删除id为2的行 return HttpResponse('ok')
三,修改表结构
modules中 from django.db import models
class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=60)
email = models.EmailField(max_length=60)
favior = models.CharField(max_length=12,null=True) 直接在上面修改max_length=12,加一行即一个字段,删除一行即删除这个字段,
然后 python manage makemigrations ;python manage migrate
四,字段,参数,元信息等,详见 http://www.cnblogs.com/wupeiqi/articles/5246483.html
字段: django中的 EmailFiled,DateTimeField等其实是django的限制,在mysql中还是字符串类型
字符串类型
数字
时间
二进制
自增(primary_key=True) 字段的参数:
null -> db是否可以为空
default -> 默认值
primary_key -> 主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->
unique_for_month
unique_for_year
auto_now_add -> 创建时,自动生成时间,保持不变
auto_now -> 更新时间,更新时自动更新为当前时间 # obj = UserGroup.objects.filter(id=1).update(caption='CEO') 这种操作不支持,不会更新,更新时间,以下操作才支持
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save() choices -> django admin中显示下拉框,避免连表查询
blank -> django admin是否可以为空
verbose_name -> django admin显示字段中文
editable -> django admin是否可以被编辑
error_messages -> 错误信息欠
help_text -> django admin提示
validators -> django form ,自定义错误信息(欠) 创建 Django 用户:python manage.py createsuperuser
choices 举例,在数据库中user_type_id存放的是数据 ,但是django后台是显示用户类型汉字 class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=60)
email = models.EmailField(max_length=60)
user_type_choice = (
(1,'超级用户'),
(2,'管理员'),
(3,'普通用户'),
)
user_type_id = models.IntegerField(choices=user_type_choice,default=3)
django操作数据库 ORM的更多相关文章
- django 操作数据库--orm(object relation mapping)---models
思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...
- django之数据库orm
一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sq ...
- Django之 数据库ORM
一.ORM Django的 业务 少不了 跟数据库打交道,不然没有数据库保存一些数据将是一件很糟糕的事情.Django 对 数据库 支持原生的 SQL语句,但更好的对数据库支持,Django自己有一套 ...
- django操作非ORM创建的表
问题:django的ORM怎么连接已存在的表,然后进行增删查改操作? 工作中会遇见很多二次开发的时候,表都是已经创建好的,用django的ORM进行二次开发,怎么操作数据库中的表呢? 下面介绍 ...
- 关于python+django操作数据库中的表
数据库中的表示这样设计的 class C(models.Model): name = models.CharField(max_length=32) class B(models.Model): na ...
- django_4:数据库1——django操作数据库
创建数据库记录(插入) 使用python3 manage.py shell(python3亲测好使) ipython3 manage.py shell(亲测不好使) 方式一. [root@centos ...
- Django之数据库--ORM
一.建立数据库模型类 1.在model里创建模型类.(继承models.Model) from django.db import models # Create your models here. c ...
- 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?
(注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...
- django操作数据库之查询F,Q操作 和 seach搜索功能
# F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) # Q 构建搜索 ...
随机推荐
- Redis入门指南之三(入门)
本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...
- Log4Net 添加自定义字段并保存到数据库
Log4Net是常用的功能强大的日志插件,该插件提供了几个默认字段 大家可能都用过Log4Net插件来记录日志,该插件默认提供了这几个字段@log_date, @thread, @log_level, ...
- 2019清明期间qbxt培训qaq
4.4下午:矩阵qwq part1矩阵乘法: 概念: 一个m×p的矩阵A 乘 一个p×n的矩阵B 得到一个矩阵一个m×n的矩阵AB 其中: 矩阵乘法满足结合律.分配率,不满足交换律 矩阵乘法—solu ...
- Matlab:导数边界值的有限元(Galerkin)法
tic; % this method is transform from Galerkin method %also call it as finit method %is used for solv ...
- MongoDB AUTH结果验证
创建超级管理员和普通用户 #创建超级管理员 super db.createUser( { user: "super", pwd: "super", role ...
- C++11 boost TR1 TR2曾经参考过的网址整理
boost::bind的用法:http://blog.csdn.net/adcxf/article/details/3970116
- Python之时间(time)模块
在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time( ...
- 【Sql】经典sql语句
参考网页:https://www.cnblogs.com/qixuejia/p/3637735.html 1./**查询课程1比课程2,成绩高的学生学号1.分析这些元素都在一个表里,但是上下两条记录, ...
- LeetCode 199 二叉树的右视图
题目: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值. 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 ...
- 开发方式-----C语言
上期我们已经把C语言的开发平台搭建好了,还有不清楚地可以查看我上一篇的笔记,这次我们就要进行编辑C语言,那么它到底是怎么实现开发的呢?这一期我就来演示一次开发方式,至于说明为什么会这样或者这个是什么意 ...