python與mysql運(yùn)用示例

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í)成功')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栖茉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子孵延,更是在濱河造成了極大的恐慌吕漂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尘应,死亡現(xiàn)場離奇詭異惶凝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)犬钢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門苍鲜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玷犹,你說我怎么就攤上這事混滔。” “怎么了歹颓?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵坯屿,是天一觀的道長。 經(jīng)常有香客問我巍扛,道長愿伴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任电湘,我火速辦了婚禮隔节,結(jié)果婚禮上鹅经,老公的妹妹穿的比我還像新娘。我一直安慰自己怎诫,他們只是感情好瘾晃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幻妓,像睡著了一般蹦误。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肉津,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天强胰,我揣著相機(jī)與錄音,去河邊找鬼妹沙。 笑死偶洋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的距糖。 我是一名探鬼主播玄窝,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼悍引!你這毒婦竟也來了恩脂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤趣斤,失蹤者是張志新(化名)和其女友劉穎俩块,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浓领,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡典阵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了镊逝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫉鲸,死狀恐怖撑蒜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玄渗,我是刑警寧澤座菠,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站藤树,受9級(jí)特大地震影響浴滴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岁钓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一升略、第九天 我趴在偏房一處隱蔽的房頂上張望微王。 院中可真熱鬧,春花似錦品嚣、人聲如沸炕倘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罩旋。三九已至,卻和暖如春眶诈,著一層夾襖步出監(jiān)牢的瞬間涨醋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工逝撬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浴骂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓球拦,卻偏偏與公主長得像靠闭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坎炼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • iOS如何使用Python步驟 #include “Python.h" (BOOL)application:(UI...
    Cathy范閱讀 6,237評(píng)論 1 3
  • 數(shù)據(jù)庫 關(guān)系性數(shù)據(jù)庫 ? oracle mysql Postgresql (加州伯克利分校的) SQ...
    gianna1030閱讀 1,571評(píng)論 0 0
  • 你要是天天一大早五點(diǎn)半起床, 學(xué)習(xí)一個(gè)小時(shí)再去學(xué)校愧膀, 在教室利用下課時(shí)間吃面包喝牛奶, 使勁不分心不玩手機(jī)地聽完四...
    zooooly閱讀 456評(píng)論 0 0
  • 陪小子在小區(qū)玩耍谣光, 突然檩淋, 一頭發(fā)花白的阿姨指著小子向我控訴, 你家小孩要看好萄金, 他剛剛騎滑板車撞到我腳了蟀悦, 腳上...
    妙不可言語閱讀 182評(píng)論 0 0
  • 蕩蕩在保定已經(jīng)逗留了兩日,和室友一起擼了串兒氧敢,吃了沒有拔絲的拔絲蛋糕日戈,看了“赫敏”“客串”的《美女與野獸》,要走的...
    叫卡夫卡的少年閱讀 311評(píng)論 0 0