Python的web框架Django的ORM数据库操作分析

1.建表
首先引用下,可model设定的各种字段类型
在model中建立一个表
from django.db import models

Create your models here.

class Person(models.Model):
#定义一个用户名字段,不能重复
username = models.CharField(max_length=10,unique=True)
password = models.CharField(max_length=10)
#默认值设定1
age = models.IntegerField()
#False 代表男 True 代表女 女为1 男为0
sex = models.BooleanField(default=False)
#可通过指定属性,来设定生成的列名,但在使用类中还是p_des
p_des = models.CharField(max_length=100,db_column=‘des‘)
create_date = models.DateTimeField(auto_now=True)
class Meta:
#指定生成表名,不指定默认生成格式为APP+类名
db_table = ‘user‘
python manage.py makemigrations
python manage.py migrate
通过代码随机生成些数据,这里有个小坑,也许会碰到=。=
def addUser(request):
for i in range(5):
person = Person()
num = random.randrange(100)
person.username = ‘sola%d‘ % num
person.password = ‘pass%d‘ % num
person.age = num
person.sex = num % 2
person.save()
return HttpResponse("success")
2.条件查询
可用过filter与exclude来链式查询。
def getUser(request):
#可以通过filter来查询(满足),可以继续链式多个条件。
#users = Person.objects.filter(usernamecontains="5").filter(usernamecontains=3)
#也可以用通过exclude(不满足),来查询
users = Person.objects.exclude(usernamecontains="5").filter(usernamecontains="9")
for user in users:
print(user.username)
print(user.create_date)
return HttpResponse("success")
3.另一种添加方法?
def addUserTwo(request):
user = Person.objects.create(username=‘rui~‘,password=‘rui!‘,age=18)
user.save()
return HttpResponse("success")
4.排序
def getUser(request):
#直接加入order_by即可根据字段排序,默认是正序,前面加减号为倒叙
users = Person.objects.filter(agein=[‘73‘,‘34‘,‘84‘]).order_by("-username")
for user in users:
print(user.username)
print(user.create_date)
return HttpResponse("success")
5.将数据转成字典(转成Map)
def getUser(request):
#values可以直接把结果转换成字典,字典可通过工具直接转成JSON
users = Person.objects.filter(age
in=[‘63‘,‘50‘,‘36‘,‘11‘]).values()
for user in users:
print(user.username)
print(user.create_date)
print(user.sex)
return HttpResponse("success")
6.二次查询(查询结果再次查询)
def getUser(request):
users = Person.objects.filter(age__in=[‘63‘,‘50‘,‘36‘,‘11‘])
#可以再一次进行查询
users = users.filter(age=‘50‘)
for user in users:
print(user.username)
print(user.create_date)
print(user.sex)
return HttpResponse("success")
7.切片查询
def getUser(request):
#切片查询,从第四条开始,到第五条,不能有负数
users = Person.objects.all()[3:5]
for user in users:
print(user.username)
print(user.create_date)
print(user.sex)
return HttpResponse("success")
8.忽略大小写查询
查询前加入i即可
9.更改时间区域设定?
默认Django有一套自定义的时区,与一般的数据库不匹配,会造成查询不准确,需要去setting中关闭它
#默认是True,改为False即可
USE_TZ = False
10.聚合函数
def getUser(request):
#聚合函数,Avg平均,Count数量,Max最大,Min最小,Sum求和;参数填入字段
avgNum = Person.objects.aggregate(Avg("age"))
print(avgNum)
return HttpResponse("success")
11.某一条字段进行对比
def getUser(request):
#一条数据中某字段进行对比,可进行大小等于,包含等
#users = Person.objects.filter(age=F("id"))
#也可以这么写,age 大于 id+1
users = Person.objects.filter(agegt=F("id")+1)
function(){ //点值计算器http://www.fx61.com/dotpoint.html
print(users.values())
return HttpResponse("success")
12.逻辑运算符的查询写法
def getUser(request):
users = Person.objects.filter(Q(age
gt=90) & Q(age__lt=100))
print(users.values())
return HttpResponse("success")
13.封装某些默认查询条件
因为查询方法是通过Django在model中自动生成查询objectsManager,我们可以建立一个类继承于Manager,并重写他的查询方法,再给Model类中赋予对象给objects参数,再通过调用objects参数进行查询,就会过滤想默认过滤的条件。
model
#歌曲类管理
class SongManager(models.Manager):
def get_queryset(self):
return super(SongManager,self).get_queryset().filter(is_deleter=1)
#继承歌曲管理类
class Song(models.Model):
name = models.CharField(max_length=50)

length = models.CharField(max_length=10)
is_deleter = models.IntegerField(max_length=1,default=0)
singer = models.CharField(max_length=30)
objects = SongManager()

views
def getSong(request):
songs = Song.objects.all()
for song in songs:
print(song.name)
return HttpResponse("success")
原文链接:blog.csdn.net/jiulanhao/article/details/103027355

原文地址:https://blog.51cto.com/14511863/2450372

时间: 2024-10-04 16:57:39

Python的web框架Django的ORM数据库操作分析的相关文章

Python之Web框架Django

Python之Web框架: Django 一.  Web框架的本质: 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 #web框架的基础结构,几乎所有开发者都是基于此基础结果进行扩展. 5 6 import socket 7 8 def handle_request(client): 9 buf = client.recv(1024) 10 clien

简单学习Python的web框架Django(一)

我的学习环境是Windows 7,首先安装Python,我安装的版本是Python 2.7,之后需确认"C:\Python27\Scripts;C:\Python27;"这两个路径添加到Path系统变量里面了. 图一 然后下载Django.我下载的版本是Django-1.8.tar.gz.然后解压,命令行方式进入解压目录,用"setup.py install"命令来安装.安装完成后,在python shell中输入"import django",

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网

python运维开发(十七)----jQuery续(示例)web框架django

内容目录: jQuery示例 前端插件 web框架 Django框架 jQuery示例 dom事件绑定 jQuery事件绑定 jQuery循环break jQuery扩展方法 jQuery自定义扩展的方法 jquery扩展实现基本验证 支持是否为空 长度 正则表达式 定义正则表达式 reg = /正则表达式/ ***** g i m ==> 特殊 利用正则匹配 reg.test(字符串) ***** reg.exec(字符串) 全局 非全局字符串三个方法: search match replac

Web框架——Django笔记

Web框架——Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django——MTV 1.创建Django程序   (注:创建前需注意配置Django环境变量,python2.7和3.5环境变量) a.命令(使用cmd命令创建) django-admin startproject mysite      创建project cd mysite python manage.py startapp app01  

Web框架Django基础

Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 一.基本配置 1.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver 0.0.0.0 python manage.py

Python之Web框架介绍

所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tornado) 不包含socket(框架本身通过第三方模块实现socket)只包含业务逻辑处理(django,Flask) WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口.具

python 实现web框架simfish

python 实现web框架simfish 本文主要记录本人利用python实现web框架simfish的过程.源码github地址:simfish WSGI HTTP Server wsgi模块提供了简单的simple_server, wsgiref.simple_server.make_server(host, port, app, server_class=WSGIServer, handler_class=WSGIRequestHandler) 官方提供的例子, from wsgiref

python bottle web框架简介

Bottle 是一个快速,简单,轻量级的 Python WSGI Web 框架.单一文件,只依赖 Python 标准库 .bottle很适合会一点python基础的人使用,因为这框架用起来很简单,只要你会python基础语法,有一点WEB知识,就可以开发出很不错的WEB.学了python的运维人员,压根不需要django框架,就可以运维工具了,毕竟django学习起来,比较复杂,学习时间也长,我们有必要一定要使用django吗? URL 映射 (Routing): 将 URL 请求映射到 Pyt