亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Django中操作數(shù)據(jù)庫(kù)的3種方法

        2021-12-06 07:55:40陳娜付沛
        科學(xué)與生活 2021年24期
        關(guān)鍵詞:游標(biāo)單行管理器

        陳娜 付沛

        摘要:Django通過(guò)Manager(模型管理器)提供數(shù)據(jù)庫(kù)訪問(wèn)接口。默認(rèn)情況下,Django為每個(gè)模型添加一個(gè)名為objects的管理器,調(diào)用objects的各種方法?可完成相關(guān)的數(shù)據(jù)庫(kù)操作;也可以用模型管理器的raw()方法執(zhí)行原始SQL查詢(xún)并返回模型示例;或者不使用模型直接執(zhí)行原始SQL。本文介紹3種方法,可根據(jù)自身情況選擇一種方法完成數(shù)據(jù)庫(kù)操作。

        在django中我們只需要操作類(lèi)或者對(duì)象,ORM它系統(tǒng)幫你根據(jù)類(lèi)和對(duì)象來(lái)操作數(shù)據(jù)庫(kù)

        類(lèi)--à數(shù)據(jù)表?對(duì)象?---〉數(shù)據(jù)行?屬性—〉?字段

        首先創(chuàng)建項(xiàng)目mydjango

        1、?創(chuàng)建book?應(yīng)用

        2、?在settings.py文件中加入book應(yīng)用

        3、?打開(kāi)models.py定義表的結(jié)構(gòu)

        class?faqsdata(models.Model):

        question?=?models.CharField(max_length=20,?blank=True)

        answer?=?models.CharField(max_length=20,?blank=True)

        4、使用命令生成遷移文件(系統(tǒng)幫你生成的sql語(yǔ)句)

        python?manage.py?makemigrations

        5、使用命令?運(yùn)行?遷移文件(相當(dāng)于執(zhí)行sql命令)

        python?manage.py?migrate

        6、打開(kāi)終端輸入以下命令進(jìn)入當(dāng)前項(xiàng)目的Python交互環(huán)境

        python?manage.py?shell

        7、導(dǎo)入模型類(lèi)

        from?book.models?import?;faqsdata

        一、使用默認(rèn)管理器objects

        Django通過(guò)模型對(duì)象的默認(rèn)管理器objects提供了多種獲取數(shù)據(jù)的方法

        (1)create方法創(chuàng)建模型的對(duì)象,并將數(shù)據(jù)保存進(jìn)數(shù)據(jù)庫(kù)

        >>>?ds=faqsdata.objects.create(question='test',answer='bbb')

        >>>?ds=faqsdata.objects.create(question='test434',answer='aaa')

        (2)all方法獲取所有數(shù)據(jù)行,相當(dāng)于sql中的select?*?from?****

        >>>?ds=faqsdata.objects.all()

        >>>?for?a?in?ds:

        ...?print(a.id,a.question,a.answer)

        ...

        1?test?bbb

        2?test4334?aaa

        (3)get、filter、update方法過(guò)濾出符合條件的行進(jìn)行更新

        1更新單行

        >>>?ds=faqsdata.objects.get(id="1")

        >>>?print(ds.id,ds.question,ds.answer)

        1?test?bbb

        >>>?ds.question="yyyyyyyy"

        >>>?d.save()

        >>>?print(ds.id,ds.question,ds.answer)

        1?yyyyyyyy?bbb

        2更新多行

        >>>?ds=faqsdata.objects.filter(id__lte="9")

        >>>?ds.update(answer='bbbbbb')

        4

        >>>?ds=faqsdata.objects.update(answer='ppppp')?全表更新

        >>>

        (4)filter、delete方法過(guò)濾出符合條件的行進(jìn)行刪除

        >>>?faqsdata.objects.filter(id__gt=9).delete()?get刪除單行

        (3,?{'book.faqsdata':?3})

        二、用模型管理器raw()方法執(zhí)行原始SQL

        >>>?ds=scores.objects.raw("select?*?from?book_scores?where?yw<%s",[50])

        >>>?for?a?in?ds:

        ...?print(a.id,a.kh,a.xm,a.yw,a.sx,a.bj)

        ...

        >>>?ds=scores.objects.raw("update?book_scores?set?yw=100?where?id=3")

        >>>?ds.query._execute_query()

        >>>d=scores.objects.raw("insert?into?book_scores(kh,xm,yw,sx,bj)?values?('10110199','fdsaf',11,22,'class1')")

        >>>?d.query._execute_query()

        >>>?d=scores.objects.raw("delete?from?book_scores?where?id=63")

        >>>?d.query._execute_query()

        三、不使用模型訪問(wèn)數(shù)據(jù)庫(kù)

        也可以不使用模型管理器直接訪問(wèn)數(shù)據(jù)庫(kù),使用游標(biāo),但是有SQL注入風(fēng)險(xiǎn),基本步驟如下:

        調(diào)用django.db.connection.cursor()方法獲得一個(gè)游標(biāo)對(duì)象。django.db.connection對(duì)象代表默認(rèn)數(shù)據(jù)庫(kù)連接。

        調(diào)用游標(biāo)對(duì)象的execute(sql)方法執(zhí)行SQL命令。

        調(diào)用游標(biāo)對(duì)象的fetchall()或fetchone()方法返回?cái)?shù)據(jù)。

        >>>?from?django.db?import?connection

        >>>?cursor=connection.cursor()

        >>>?cursor.execute("select?*?from?book_scores?where?id<7")

        >>>?for?a?in?cursor.fetchall():

        ...?print(a[0],a[1],a[2])

        ...

        >>>a=cursor.execute("insert?into?book_scores(kh,xm,yw,sx,bj)?values?('10110199','fdsaf',11,22,'class1')")

        >>>?a=cursor.execute("update?book_scores?set?yw=100?where?id=10")

        >>>?a=cursor.execute("delete?from?book_scores?where?id=10")

        猜你喜歡
        游標(biāo)單行管理器
        (2+1)維時(shí)空分?jǐn)?shù)階Nizhnik-Novikov-Veslov方程組的精確單行波解
        MySQL數(shù)據(jù)庫(kù)下游標(biāo)的設(shè)計(jì)與應(yīng)用
        測(cè)量不確定度在游標(biāo)式輪對(duì)內(nèi)距尺檢定裝置中的應(yīng)用
        應(yīng)急狀態(tài)啟動(dòng)磁盤(pán)管理器
        溫室番茄膜下滴灌單膜單行栽培新法
        Windows文件緩沖處理技術(shù)概述
        The misfortune in life
        Joseph-Egri方程的單行波解
        SQL數(shù)據(jù)庫(kù)中基于游標(biāo)的數(shù)據(jù)更新
        電腦與電信(2015年9期)2015-04-16 01:30:10
        高集成度2.5A備份電源管理器簡(jiǎn)化鋰離子電池備份系統(tǒng)
        国产精品揄拍100视频| 亚洲成人小说| 国产大片内射1区2区| 国产午夜精品久久精品| 国产一区二区欧美丝袜 | 日本a级黄片免费观看| 国产一区二区在线观看我不卡 | 国产成人国产三级国产精品 | 51看片免费视频在观看| 久久精品国产亚洲av性瑜伽| 蜜桃视频一区二区三区在线| 日韩精品一区二区三区在线观看| 精品偷拍被偷拍在线观看| 日本a级免费大片网站 | 丝袜美腿亚洲综合在线播放| 国产一区二区a毛片色欲 | 人妻激情偷乱一区二区三区| 麻豆婷婷狠狠色18禁久久| 日韩av毛片在线观看| 亚洲一区二区三区厕所偷拍| 蜜桃一区二区三区在线看| 伴郎粗大的内捧猛烈进出视频观看 | 久久人妻中文字幕精品一区二区| 男人天堂AV在线麻豆| 久久香蕉国产线看观看网| 亚洲成人色区| 草草地址线路①屁屁影院成人| 99久久国内精品成人免费| 99国语激情对白在线观看| 欧美熟妇与小伙性欧美交| 99精品一区二区三区免费视频| 欧美最猛黑人xxxx黑人表情| 亚洲av日韩aⅴ无码色老头| 日韩精品亚洲一区二区 | 日本少妇被爽到高潮的免费 | 国产一级在线现免费观看| 中文字幕 人妻熟女| 无码人妻精一区二区三区| 欧美人与禽zozzo性伦交| 神马影院午夜dy888| 国产毛片av一区二区|