Python ? day 13

Python學(xué)習(xí)筆記之 MongoDB數(shù)據(jù)庫(kù) & Redis數(shù)據(jù)庫(kù)

系統(tǒng)說(shuō)明:windows
一部默、操作MongoDB數(shù)據(jù)庫(kù)
1推掸、創(chuàng)建數(shù)據(jù)庫(kù)
    語(yǔ)法:use 數(shù)據(jù)庫(kù)名
    注意:如果數(shù)據(jù)庫(kù)不存在則創(chuàng)建數(shù)據(jù)庫(kù)罪佳,否則切換到指定的數(shù)據(jù)庫(kù)
    注意:如果剛剛創(chuàng)建的數(shù)據(jù)庫(kù)不在列表內(nèi)杯道,如果要顯示它澡绩,我們需要向剛剛創(chuàng)建的數(shù)據(jù)庫(kù)中插入一些數(shù)據(jù)(  db.student.insert({name:"tom",age:18,gender:1,address:"北京",isDelete:0})  )
2、刪除數(shù)據(jù)庫(kù)
    前提:使用當(dāng)前數(shù)據(jù)庫(kù)(use 數(shù)據(jù)庫(kù)名)
    db.dropDatabase()
3滑蚯、查看所有數(shù)據(jù)庫(kù)
    語(yǔ)法:show dbs
4浪蹂、查看當(dāng)前正在使用的數(shù)據(jù)庫(kù)
    a、db
    b告材、db.getName()
5坤次、斷開(kāi)連接
    exit
6、查看命令幫助
    help
二斥赋、集合操作
1缰猴、查看當(dāng)前數(shù)據(jù)庫(kù)下有哪些集合
    show collections
2、創(chuàng)建集合
    a疤剑、
        語(yǔ)法:db.createCollection("集合名")
        示例:db.createCollection("class")
    b滑绒、
        語(yǔ)法:db.集合名.insert(文檔)
        示例:db.student.insert({name:"tom",age:18,gender:1,address:"北京",isDelete:0}) 
        
    區(qū)別:兩者的區(qū)別在于前者創(chuàng)建的是一個(gè)空的集合闷堡,后者創(chuàng)建的一個(gè)空的集合并添加一個(gè)文檔
3、刪除當(dāng)前數(shù)據(jù)庫(kù)中的集合
    語(yǔ)法:db.集合名.drop()
    示例:db.class.drop()
三疑故、文檔操作
1杠览、插入文檔
    a、使用insert()方法插入文檔
        插入一個(gè):
            語(yǔ)法:db.集合名.insert(文檔)
            示例:db.student.insert({name:"李雷",age:22,gender:1,address:"南江",isDelete:0}) 
        插入多個(gè):
            語(yǔ)法:db.集合名.insert([文檔1,文檔2,……,文檔n])
            示例:db.student.insert([{name:"李雷",age:22,gender:1,address:"南江",isDelete:0},{name:"cc",age:22,gender:1,address:"天津",isDelete:0},{name:"小姐姐",age:22,gender:1,address:"成都",isDelete:0}])
    b焰扳、使用save()方法插入文檔
        語(yǔ)法:db.集合名.save(文檔)
        說(shuō)明:如果不指定_id字段倦零,save()方法類(lèi)似于insert()方法。如果指定_id字段吨悍,則會(huì)更新_id字段的數(shù)據(jù)
        示例1:db.student.insert({name:"張三",age:21,gender:1,address:"上海",isDelete:0})
        示例2:db.student.insert({_id:ObjectId("5b0a2360864a739fd6c0af16"),name:"tom",age:22,gender:1,address:"上海",isDelete:0})
    
2、文檔更新
    a蹋嵌、update()方法用于更新已存在的文檔
        語(yǔ)法:
            db.集合名.update(
                query,
                update,
                {
                    upset:<boolean>,
                    multi:<boolean>,
                    writeConcern:<document>
                }
            )
        參數(shù)說(shuō)明:
            query:update的查詢(xún)條件育瓜,類(lèi)似于sql里update內(nèi)的where后面的內(nèi)容
            update:update的對(duì)象和一些更新的操作符($set,$inc)等,$set直接更新栽烂,$inc在 原有的基礎(chǔ)上累加后更新
            upset:可選躏仇,如果不存在update的記錄,是否當(dāng)新數(shù)據(jù)插入腺办,true為插入焰手,F(xiàn)alse為不插入,默認(rèn)為false
            multi:可選怀喉,mongodb默認(rèn)是false书妻,只更新找到的第一條記錄,如果這個(gè)參數(shù)為true躬拢,就按照條件查找出來(lái)的數(shù)據(jù)全部更新
            writeConcern:可選躲履,拋出異常的級(jí)別
            
        需求:將tom的年齡更新為25 
        示例:
            db.student.update({name:"tom"},{$set:{age:25}})
            累加:db.student.update({name:"tom"},{$inc:{age:25}})  
            全改:db.student.update({name:"李雷"},{$set:{age:30}},{multi:true})
        
    b、save()方法用于通過(guò)傳入的文檔替換已有文檔
        語(yǔ)法:
            db.集合名.save(
                document,
                {
                    writeConcern:<document>
                }
            )
        參數(shù)說(shuō)明:
            document:文檔數(shù)據(jù)
            writeConcern:可選聊闯,拋出異常的級(jí)別
    
3工猜、文檔刪除
    說(shuō)明:在執(zhí)行remove()函數(shù)前,先執(zhí)行find()命令來(lái)判斷執(zhí)行的條件是否存在是一個(gè)良好的習(xí)慣
    
    語(yǔ)法: 
        db.集合名.remove(
            query,
            {
                justOne:<boolean>,
                writeConcern:<document>
            }
        )
    參數(shù)說(shuō)明:
        query:可選菱蔬,刪除文檔的條件
        justOne:可選篷帅,如果true為1,則只刪除一個(gè)文檔
        writeConcern:可選拴泌,拋出異常的級(jí)別
    示例:db.student.remove({name:"李雷"})
        
4魏身、文檔查詢(xún)
    a、find()方法
        語(yǔ)法:db.集合名.find()
        查詢(xún)集合下所有的文檔(數(shù)據(jù)):db.student.find()
        
    b弛针、find()方法查詢(xún)指定列
        語(yǔ)法:db.集合名.find(
            query,
            {
                <key>:1,
                <key>:1
            }
        )
        參數(shù)說(shuō)明:
            query:查詢(xún)條件
            key:要顯示的字段叠骑,1表示顯示
        示例:
            db.student.find({gender:1},{name:1,age:1})
            db.student.find({},{name:1,age:1})
            
    c、pretty()方法以格式化的方式來(lái)顯示文檔
        示例:db.student.find().pretty()
        
    d削茁、findOne()方法查詢(xún)匹配結(jié)果的第一條數(shù)據(jù)
        示例:db.student.findOne({gender:0})
            
5宙枷、查詢(xún)條件操作符
    作用:條件操作符用于比較兩個(gè)表達(dá)式并從MongoDB集合中獲取數(shù)據(jù)
        a掉房、大于                    -   $gt
            語(yǔ)法:db.集合名.find({<key>:{$gt:<value>}})
            示例:db.student.find({age:{$gt:20}})
            
        b、大于等于              -   $gte
            語(yǔ)法:db.集合名.find({<key>:{$gte:<value>}})
            
        c慰丛、小于                    -   $lt
            語(yǔ)法:db.集合名.find({<key>:{$lt:<value>}})
            
        d卓囚、小于等于              -   $lte
            語(yǔ)法:db.集合名.find({<key>:{$lte:<value>}})
        
        e、大于等于和小于等于 -   $gte 和 $lte
            語(yǔ)法:db.集合名.find({key}:{$gte:<value>,$lte:<value>}})
            
        f诅病、等于                    -   :
            語(yǔ)法:db.集合名.find({key}:<value>)
        
        g哪亿、使用_id進(jìn)行查詢(xún)
            語(yǔ)法:db.集合名.find({"_id":ObjectId("id值")})
            示例:db.student.find({"_id":ObjectId("5b0a2360864a739fd6c0af16")})
            
        h、查詢(xún)某個(gè)結(jié)果集的數(shù)據(jù)條數(shù)
            db.student.find().count()
        
        i贤笆、查詢(xún)某個(gè)字段的值當(dāng)中是否包含另一個(gè)值
            示例:db.student.find({name:/om/})
        
        j蝇棉、查詢(xún)某個(gè)字段的值是否以另一個(gè)值開(kāi)頭
            示例:db.student.find({name:/^to/})
    
6、條件查詢(xún)and 和 or
    a芥永、AND條件
        語(yǔ)法:db.集合名.find({條件1,條件2,……,條件n})
        示例:db.student.find({gender:0,age:{$ge:16}})
        
    b篡殷、OR條件
        語(yǔ)句:
            db.集合名.find(
                {
                    $or:[{條件1},{條件2},{……},{條件n}]
                }
            )
        示例:db.student.find({$or:[{age:21},{age:22}]})
        
    c、AND和OR聯(lián)合使用
        語(yǔ)法:
            db.集合名.find(
                {
                    條件1,
                    條件2,
                    $or:[{條件3},{條件4}]
                }
            )
 
7埋涧、limit板辽、 skip
    a、limit():讀取指定數(shù)量的數(shù)據(jù)記錄
        db.student.find().limit(2)
    b棘催、skip():跳過(guò)指定數(shù)量的數(shù)據(jù)
        db.student.find().skip(3)
    c劲弦、skip和limit聯(lián)合使用
        通常用這種方式來(lái)實(shí)現(xiàn)分頁(yè)功能
        示例:db.student.find().skip(3).limit(2)
8、排序
    語(yǔ)法:db.集合名.find().sort({<key>:1|-1})
    示例:db.student.find().sort({age:1})
    注意:1表示升序醇坝,-1表示降序
Redis
redis類(lèi)型操作
一邑跪、String
概述:
    String是redis最基本的類(lèi)型,最大能存儲(chǔ)512MB的數(shù)據(jù)纲仍,String類(lèi)型是二進(jìn)制安全的呀袱,即可存儲(chǔ)任何數(shù)據(jù)、比如數(shù)字郑叠、圖片夜赵、序列化對(duì)象等
    
1、設(shè)置
    a乡革、設(shè)置鍵值
        set key value 
    
    b寇僧、設(shè)置鍵值及過(guò)期時(shí)間
        setex key senconds value
        
    c、設(shè)置多個(gè)鍵值
        mset key value [key value ……]
        
2沸版、獲取
    a嘁傀、根據(jù)鍵獲取值,如果鍵不存在則返回None(null 0 nil)
        get key 
    b视粮、根據(jù)多個(gè)鍵獲取多個(gè)值
        mget key [key ……]

3细办、運(yùn)算
    要求:值是數(shù)字類(lèi)型的字符串
    a、將key對(duì)應(yīng)的值加1
        incr key 
    b、將key對(duì)應(yīng)的值減1
        decr key 
    c笑撞、將key對(duì)應(yīng)的值加整數(shù)
        incrby key intnum
    d岛啸、將key對(duì)應(yīng)的值減整數(shù)
        decrby key intnum   
        
4、其它
    a茴肥、追加值
        append key value
    b坚踩、獲取值長(zhǎng)度
        strlen key
二、key
1瓤狐、查找鍵瞬铸,參數(shù)支持正則
    keys pattern
    
2、判斷鍵是否存在础锐,如果存在返回1嗓节,如果不存在返回0
    exists key

3、查看鍵對(duì)應(yīng)的value的類(lèi)型
    type key

4皆警、刪除鍵及對(duì)應(yīng)的值
    del key [key ……]

5赦政、設(shè)置過(guò)期時(shí)間,以秒為單位
    expire key seconds

6耀怜、查看有效時(shí)間,以秒為單位
    ttl key
三桐愉、hash
概述:hash用于存儲(chǔ)對(duì)象的
{
    name:"tom",
    age:18
}
1财破、設(shè)置
    a、設(shè)置單個(gè)值
        hset key field value
    b从诲、設(shè)置多個(gè)值
        hmset key field value [field value ……]
    
2左痢、獲取
    a、獲取一個(gè)屬性的值
        hget key field
    b系洛、獲取多個(gè)屬性的值
        hmget key field [field ……]
    c俊性、獲取所有屬性和值
        hgetall key
    d、獲取所有的屬性
        hkeys key
    e描扯、獲取所有值
        hvals key
    f定页、返回包含屬性的個(gè)數(shù)
        hlen key
    
3、其它
    a绽诚、判斷屬性是否存在典徊,存在返回1,不存在返回0
        hexists key field
    b恩够、刪除屬性及值
        hdel key field [field ……]
    c卒落、返回值的字符串長(zhǎng)度
        hstrlen key field
四、list
概述:列表的元素類(lèi)型為string蜂桶,按照插入的順序排序儡毕,在列表的頭部或尾部添加元素
1、設(shè)置
    a扑媚、在頭部插入
        lpush key value [value……]
    b腰湾、在尾部插入
        rpush key value [value……]
    c雷恃、在一個(gè)元素的前或后插入新元素
        linsert key before|after pivot value
    d、設(shè)置指定索引的元素值
        lset key index value
        注意:index從0開(kāi)始
        注意:索引值可以是負(fù)數(shù)檐盟,表示偏移量是從list的尾部開(kāi)始褂萧,如-1表示最后一個(gè)元素
2、獲取
    a葵萎、移除并返回key對(duì)應(yīng)的list的第一個(gè)元素
        lpop key
    b导犹、移除并返回key對(duì)應(yīng)的list的最后一個(gè)元素
        rpop key
    c、返回存儲(chǔ)在key的列表中的指定范圍的元素
        lrange key start end
        注意:start end 都是從0開(kāi)始
        注意:偏移量可以是負(fù)數(shù)
3羡忘、其它
    a谎痢、裁剪列表,改為元集合的一個(gè)子集
        ltrim key start end
        注意:start end 都是從0開(kāi)始
        注意:偏移量可以是負(fù)數(shù)
    b卷雕、返回存儲(chǔ)在key里的list的長(zhǎng)度
        llen key
    c节猿、返回列表中索引對(duì)應(yīng)的值
五、set
概述:無(wú)序集合漫雕,元素類(lèi)型為string類(lèi)型滨嘱,元素具有唯一性,不重復(fù)
1浸间、設(shè)置
    a太雨、添加元素
        sadd key member [member ……]
2、獲取
    a魁蒜、返回key集合中所有的元素
        smmbers key
    b囊扳、返回集合元素個(gè)數(shù)
        scard key
3、其它
    a兜看、求多個(gè)集合的交集
        sinter key [key ……]
    b锥咸、求多個(gè)集合的差集
        sdiff key [key ……]
    c、求多個(gè)集合的合集
        sunion key [key ……]
    d细移、判斷元素是否在集合中,存在返回1搏予,不存在返回0
        sismember key member
六、zset
概述:
    a葫哗、有序集合缔刹,元素類(lèi)型為string,元素具有唯一性劣针,不能重復(fù)
    b校镐、每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的score(表示權(quán)重),通過(guò)權(quán)重的大小排序捺典,元素的score可以相同
1鸟廓、設(shè)置
    a、添加
        zadd key score member [score member ……]
        zadd z1 1 a 5 b 3 c 2 d 4 e
2、獲取
    a引谜、返回指定范圍的元素
        zrange key start end
    b牍陌、返回元素個(gè)數(shù)
        zcard key
    c、返回有序集合key中员咽,score在min和max之間的元素的個(gè)數(shù)
        zcount key min max
    d毒涧、返回有序集合key中,成員member和score值
        zscore key member 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贝室,一起剝皮案震驚了整個(gè)濱河市契讲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滑频,老刑警劉巖捡偏,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異峡迷,居然都是意外死亡银伟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)绘搞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)彤避,“玉大人,你說(shuō)我怎么就攤上這事夯辖≈姨伲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵楼雹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我尖阔,道長(zhǎng)贮缅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任介却,我火速辦了婚禮谴供,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘齿坷。我一直安慰自己桂肌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布永淌。 她就那樣靜靜地躺著崎场,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遂蛀。 梳的紋絲不亂的頭發(fā)上谭跨,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼螃宙。 笑死蛮瞄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谆扎。 我是一名探鬼主播十办,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跑慕!你這毒婦竟也來(lái)了羞酗?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苗缩,失蹤者是張志新(化名)和其女友劉穎饵蒂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酱讶,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡退盯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泻肯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渊迁。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灶挟,靈堂內(nèi)的尸體忽然破棺而出琉朽,到底是詐尸還是另有隱情,我是刑警寧澤稚铣,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布箱叁,位于F島的核電站,受9級(jí)特大地震影響惕医,放射性物質(zhì)發(fā)生泄漏耕漱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一抬伺、第九天 我趴在偏房一處隱蔽的房頂上張望螟够。 院中可真熱鬧,春花似錦峡钓、人聲如沸妓笙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)寞宫。三九已至,卻和暖如春拉鹃,著一層夾襖步出監(jiān)牢的瞬間淆九,已是汗流浹背统锤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留炭庙,地道東北人饲窿。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像焕蹄,于是被迫代替她去往敵國(guó)和親逾雄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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