from django.db.models import Avg, Sum, Count, Max, Min, F, Q
from django.http import HttpResponse
from django.shortcuts import render
from app.models import Student, StudentInfo, Grade
def hello(request):
return HttpResponse('hello world')
def add_stu(request):
if request.method == 'GET':
# 第一種方式: 新增學(xué)生信息
# stu = Student()
# stu.s_name = '小明'
# stu.age = 29
# stu.save()
# 第二種方式: create()
# objects: 管理器
for i in range(10):
Student.objects.create(s_name='小花' + str(i), age=20 + i)
# flask中使用flask-sqlalchemy拳缠,Student.query
# tornado中使用sqlalchemy刹泄,session.query(Student).filter
# Django中使用自帶的ORM匠童,Student.objects
return HttpResponse('創(chuàng)建成功')
def del_stu(request):
if request.method == 'GET':
# 實(shí)現(xiàn)刪除功能
# filter(字段=值)
# 刪除單條數(shù)據(jù)
stu = Student.objects.filter(s_name='小明').first()
stu.delete()
# 刪除多條數(shù)據(jù)
Student.objects.filter(s_name='小花').delete()
return HttpResponse('刪除成功')
def update_stu(request):
if request.method == 'GET':
# 第一種方式: 修改數(shù)據(jù)毛肋, save()
# stu = Student.objects.filter(s_name='小花').first()
# stu.age = 19
# stu.save()
# 第二種方式: update()
Student.objects.filter(s_name='小花').update(age=18, s_name='小強(qiáng)')
return HttpResponse('修改數(shù)據(jù)')
def sel_stu(request):
if request.method == 'GET':
# 查詢數(shù)據(jù)
stu = Student.objects.filter(s_name='小明').all()
# stu的結(jié)果類型為QuerySet向瓷,取其中的數(shù)據(jù),first(),last()族壳,[下標(biāo)]
# flask: get(主鍵值) ,查詢結(jié)果為獲取主鍵所在行的對(duì)象
# django: get(任何條件)趣些,查詢滿足條件的結(jié)果即可
stu = Student.objects.get(s_name='小明')
print(stu)
stu = Student.objects.filter(s_name='小明').first()
print(stu)
# django: get(條件)仿荆,查詢條件必須查找到結(jié)果,
# 如果查詢不到結(jié)果則報(bào)錯(cuò)‘DoesNotExist’
# stu = Student.objects.get(id=1000)
# 如果查詢結(jié)果超過一個(gè)對(duì)象喧务,則報(bào)錯(cuò)‘MultipleObjectsReturned ’
# stu = Student.objects.get(age=23)
# 總結(jié): get(): 查詢條件必須成立且結(jié)果只能有一個(gè)
print(stu)
# filter()過濾滿足條件赖歌, exclude()過濾不滿足條件
stus = Student.objects.exclude(age=23).all()
print(stus)
# count()統(tǒng)計(jì)多少條數(shù)據(jù)
stus = Student.objects.all()
print(len(stus))
stus = Student.objects.all().count()
print(stus)
# 排序, 升序order_by('id') 降序order_by('-id')
stus = Student.objects.all().order_by('-id')
stus = Student.objects.all().order_by('id')
print(stus)
# values(): 序列化,將對(duì)象的屬性轉(zhuǎn)化為字典格式數(shù)據(jù)
stus = Student.objects.all().values('s_name', 'age')
print(stus)
# contains功茴,字段__contains = ’值‘
stus = Student.objects.filter(s_name__contains='花').all()
stus = Student.objects.filter(s_name__startswith='花').all()
print(stus)
stus = Student.objects.filter(s_name__endswith='9').all()
print(stus)
# in, pk=id
stus = Student.objects.filter(id__in=[1, 2, 3, 4, 5, 6, 7]).all()
stus = Student.objects.filter(pk__in=[1, 2, 3, 4, 5, 6, 7]).all()
print(stus)
# 大于23庐冯,gt,gte,lt,lte
stus = Student.objects.filter(age__gt=23).all()
stus = Student.objects.filter(age__gte=23).all()
print(stus)
# 聚合,Count(), Max(), Min()
# select s_name, max(chengji) from student;
# from django.db.models import Avg
stus = Student.objects.all().aggregate(Avg('age'))
print(stus)
# 查詢語文成績大于數(shù)據(jù)成績的學(xué)生信息
# sql: select * from student where yuwen > math;
stus = Student.objects.filter(yuwen__gt=F('math'))
stus = Student.objects.filter(yuwen__gt=F('math') + 10)
print(stus)
# Q,且坎穿,或展父,非
stus = Student.objects.filter(s_name__contains='花', age=23).all()
# 或者條件
stus = Student.objects.filter(Q(s_name__contains='花') | Q(age=23)).all()
# ~非
stus = Student.objects.filter(~Q(s_name__contains='花')).all()
stus = Student.objects.exclude(s_name__contains='花').all()
print(stus)
return HttpResponse('查詢數(shù)據(jù)成功')
def add_stu_info(request):
if request.method == 'GET':
# 向拓展表中添加信息
stu_info = StudentInfo()
stu_info.phone = '13551370671'
stu_info.save()
# 拓展表主鍵id值
s_id = stu_info.id
stu= Student.objects.filter(s_name='小明').first()
# 第一種寫法: 學(xué)生對(duì)象.OneToOneFiled字段 = 關(guān)聯(lián)對(duì)象
stu.stuinfo = stu_info
# 第二種寫法: 學(xué)生對(duì)象.OneToOneFiled字段_id = 關(guān)聯(lián)對(duì)象.id
stu.stuinfo_id = stu_info.id
stu.save()
return HttpResponse('添加拓展表信息')
def sel_stuinfo_by_stu(request):
if request.method == 'GET':
# 通過學(xué)生信息找拓展表信息
stu = Student.objects.get(s_name='小明')
# StudentInfo.objects.get(pk=stu.stuinfo_id)
# 學(xué)生對(duì)象.OneToOneFiled字段
stu.stuinfo
return HttpResponse('獲取拓展表信息成功')
def sel_stu_by_info(request):
if request.method == 'GET':
# 通過拓展表中的手機(jī)號(hào)碼13551370673找學(xué)生信息
stuinfo = StudentInfo.objects.filter(phone='13551370673').first()
# stu = Student.objects.filter(stuinfo=stuinfo)
# stu = Student.objects.filter(stuinfo_id=stuinfo.id)
# print(stu)
# 拓展表對(duì)象.關(guān)聯(lián)的模型名稱小寫
stu = stuinfo.student
# 定義related_name參數(shù),拓展表對(duì)象.related_name值
stu = stuinfo.stu
print(stu)
return HttpResponse('通過拓展表信息查詢學(xué)生表信息')
def add_grade(request):
if request.method == 'GET':
# 添加班級(jí)信息玲昧,并給學(xué)生分配班級(jí)
names = ['Python班級(jí)', 'Java班級(jí)', 'Php班級(jí)', 'C++班級(jí)']
for name in names:
if not Grade.objects.filter(g_name=name).exists():
Grade.objects.create(g_name=name)
# 分配班級(jí)
stus = Student.objects.filter(pk__in=[1, 2, 3, 4, 5, 6]).all()
g = Grade.objects.filter(g_name='Python班級(jí)').first()
for stu in stus:
stu.grade = g
# stu.grade_id = g.id
stu.save()
return HttpResponse('添加班級(jí)和學(xué)生信息')
def sel_grade_by_stu(request):
if request.method == 'GET':
# 通過學(xué)生查詢班級(jí)信息
stu = Student.objects.filter(s_name='小明').first()
g = stu.grade
print(g)
# 班級(jí)查詢學(xué)生
stus = g.student_set.all()
stus = g.stu.all()
return HttpResponse('通過學(xué)生查詢班級(jí)成功')
python與mysql運(yùn)用示例
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門苍鲜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玷犹,你說我怎么就攤上這事混滔。” “怎么了歹颓?”我有些...
- 文/不壞的土叔 我叫張陵坯屿,是天一觀的道長。 經(jīng)常有香客問我巍扛,道長愿伴,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任电湘,我火速辦了婚禮隔节,結(jié)果婚禮上鹅经,老公的妹妹穿的比我還像新娘。我一直安慰自己怎诫,他們只是感情好瘾晃,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幻妓,像睡著了一般蹦误。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肉津,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼悍引!你這毒婦竟也來了恩脂?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對(duì)情侶失蹤趣斤,失蹤者是張志新(化名)和其女友劉穎俩块,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浓领,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡典阵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了镊逝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布,位于F島的核電站藤树,受9級(jí)特大地震影響浴滴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岁钓,卻給世界環(huán)境...
- 文/蒙蒙 一升略、第九天 我趴在偏房一處隱蔽的房頂上張望微王。 院中可真熱鬧,春花似錦品嚣、人聲如沸炕倘。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽罩旋。三九已至,卻和暖如春眶诈,著一層夾襖步出監(jiān)牢的瞬間涨醋,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓球拦,卻偏偏與公主長得像靠闭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坎炼,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- iOS如何使用Python步驟 #include “Python.h" (BOOL)application:(UI...
- 數(shù)據(jù)庫 關(guān)系性數(shù)據(jù)庫 ? oracle mysql Postgresql (加州伯克利分校的) SQ...
- 陪小子在小區(qū)玩耍谣光, 突然檩淋, 一頭發(fā)花白的阿姨指著小子向我控訴, 你家小孩要看好萄金, 他剛剛騎滑板車撞到我腳了蟀悦, 腳上...