中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

在Python中使用mongoengine操作MongoDB教程
來(lái)源:易賢網(wǎng) 閱讀:1163 次 日期:2015-04-28 14:14:09
溫馨提示:易賢網(wǎng)小編為您整理了“在Python中使用mongoengine操作MongoDB教程”,方便廣大網(wǎng)友查閱!

在Python中使用mongoengine操作MongoDB教程

這篇文章主要介紹了在Python中使用mongoengine操作MongoDB教程,包括在Django下的一些使用技巧,需要的朋友可以參考下

最近重新拾起Django,但是Django并不支持mongodb,但是有一個(gè)模塊mongoengine可以實(shí)現(xiàn)Django Model類似的封裝.但是mongoengine的中文文檔幾乎沒有,有的也是簡(jiǎn)短的幾句介紹和使用.下面我就分享一下我在使用過程中所記錄下的一些筆記,可能有點(diǎn)亂.大家可以參考一下.

安裝mongoengine

easy_install pymongo # 依賴庫(kù)

easy_install mongoengine

基本使用

from mongoengine import *

from datetime import datetime

# 連接數(shù)據(jù)庫(kù)

connect('blog') # 連接本地blog數(shù)據(jù)庫(kù)

# 如需驗(yàn)證和指定主機(jī)名

# connect('blog', host='192.168.3.1', username='root', password='1234')

# 定義分類文檔

class Categories(Document):

' 繼承Document類,為普通文檔 '

name = StringField(max_length=30, required=True)

artnum = IntField(default=0, required=True)

date = DateTimeField(default=datetime.now(), required=True)

和Django的model使用很類似,所以也不解釋什么.

插入

cate = Categories(name="Linux") # 如果required為True則必須賦予初始值,如果有default,賦予初始值則使用默認(rèn)值

cate.save() # 保存到數(shù)據(jù)庫(kù)

查詢和更新

文檔類有一個(gè) objects 屬性.我們使用它來(lái)查詢數(shù)據(jù)庫(kù).

# 返回集合里的所有文檔對(duì)象的列表

cate = Categories.objects.all()

# 返回所有符合查詢條件的結(jié)果的文檔對(duì)象列表

cate = Categories.objects(name="Python")

# 更新查詢到的文檔:

cate.name = "LinuxZen"

cate.update()

查詢數(shù)組 默認(rèn)查詢數(shù)組"="代表的意思是in:

class Posts(Document):

artid = IntField(required=True)

title = StringField(max_length=100, required=True)

content = StringField(required=True)

author = ReferenceField(User)

tags = ListField(StringField(max_length=20, required=True), required=True)

categories = ReferenceField(Categories), required=True)

comments = IntField(default=0, required=True)

# 將會(huì)返回所有tags包含coding的文檔

Posts.objects(tags='coding')

ReferenceField 引用字段:

通過引用字段可以通過文檔直接獲取引用字段引用的那個(gè)文檔:

class Categories(Document):

name = StringField(max_length=30, required=True)

artnum = IntField(default=0, required=True)

date = DateTimeField(default=datetime.now(), required=True)

class Posts(Document):

title = StringField(max_length=100, required=True)

content = StringField(required=True)

tags = ListField(StringField(max_length=20, required=True), required=True)

categories = ReferenceField(Categories)

插入引用字段

cate =Categories(name="Linux")

cate.save()

post = Posts(title="Linuxzen.com", content="Linuxzen.com",tags=["Linux","web"], categories=cate)

post.save()

通過引用字段直接獲取引用文檔對(duì)象

一般文檔查詢會(huì)返回一個(gè)列表(盡管只有一個(gè)結(jié)果),我們想要獲得一個(gè)文檔對(duì)象可以使用索引獲取第一個(gè)文檔對(duì)象,但是mongoengine建議使用first()來(lái)獲取第一個(gè):

>>> cate = Posts.objects.all().first().categories

>>> cate

>>> cate.name

u'Linux'

查詢包含Linux分類的文章

>>> cate = Categories.objects(name="Linux").first()

>>> Posts.objects(categories=cate)

EmbeddedDocument 嵌入文檔

繼承EmbeddedDocument的文檔類就是嵌入文檔,嵌入文檔用于嵌入其他文檔的EmbeddedDocumentField 字段,比如上面例子的tags字段如果改成嵌入文檔的話可以將Posts文檔類改成如下方式:

class Posts(Document):

title = StringField(max_length=100, required=True)

content = StringField(required=True)

tags = ListField(EmbeddedDocumentField('Tags')required=True)

categories = ReferenceField(Categories)

還需要添加一個(gè)Tags嵌入文檔類:

class Tags(EmbeddedDocument):

name = StringField()

date = DateTimeField(default=datetime.now())

我們像如下方式插入Posts文檔中的Tags

>>> tag = Tags(name="Linuxzen")

>>> post = Posts(title="Linuxzen.com", content="Linuxzen.com", tags=[tag], categories=cate)

>>> tag = Tags(name="mysite")

>>> post.tags.append(tag)

>>> post.save()

>>> tags = post.tags

>>> for tag in tags:

print tag.name

Linuxzen

mysite

時(shí)間段查詢

start = datetime(int(year), int(month), 1)

if int(month) + 1 > 12:

emonth = 1

eyear = int(year) + 1

else:

emonth = int(month) + 1

eyear = int(year)

end = datetime(eyear, emonth, 1)

articles = Posts.objects(date__gte=start, date__lt=end).order_by('-date')

分片

slice用于分片

# comments - skip 5, limit 10

Page.objects.fields(slice__comments=[5, 10])

# 也可以使用索引值分片

# limit 5

users = User.objects[:5]

# skip 5

users = User.objects[5:]

# skip 10, limit 15

users = User.objects[10:15]

使用原始語(yǔ)句查詢

如果想使用原始的pymongo查詢方式可以使用__raw__操作符 Page.objects(raw={'tags':'coding'}) 使用$inc和$set操作符

# 更新嵌入文檔comments字段by的值為joe的文檔字段votes增加1

Page.objects(comments_by="joe").update(inc__votes=1)

# 更新嵌入文檔comments字段by的值為joe的文檔字段votes設(shè)置為1

Page.objects(comments_by="joe").update(set__votes=1)

其他技巧

#查詢結(jié)果轉(zhuǎn)換成字典

users_dict = User.objects().to_mongo()

# 排序,按日期排列

user = User.objects.order_by("date")

# 按日期倒序

user = User.objects.order_by("-date")

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:在Python中使用mongoengine操作MongoDB教程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产精品一区2区| 国产精品久久久久久久午夜| 欧美日韩国产区一| 91久久综合亚洲鲁鲁五月天| 美女精品在线观看| 亚洲激情在线播放| 国产精品magnet| 久久国产88| 91久久在线视频| 国产精品久久77777| 久久成人精品无人区| 亚洲国产日韩欧美综合久久| 欧美视频一区二区| 欧美专区在线观看| 亚洲精品影视在线观看| 国产精品日韩一区| 欧美r片在线| 亚洲欧美日韩国产一区二区三区| 国产综合香蕉五月婷在线| 欧美www在线| 香蕉久久a毛片| 亚洲肉体裸体xxxx137| 国产欧美日韩精品a在线观看| 久久视频在线免费观看| 亚洲午夜女主播在线直播| 在线观看av不卡| 国产精品视频你懂的| 每日更新成人在线视频| 午夜伦欧美伦电影理论片| 亚洲精品国产精品乱码不99 | 在线免费观看日韩欧美| 国产精品免费观看视频| 另类综合日韩欧美亚洲| 午夜免费日韩视频| 宅男噜噜噜66一区二区| 亚洲国产精品一区二区www在线| 国产日产精品一区二区三区四区的观看方式 | 久久婷婷丁香| 午夜精品国产更新| 一本色道久久综合亚洲精品按摩 | 欧美三级日韩三级国产三级| 久久久久青草大香线综合精品| 亚洲午夜久久久| 亚洲美女视频网| 亚洲国产精品va在线看黑人| 国产一区二区久久精品| 国产精品国产三级国产普通话99| 欧美韩日高清| 免费视频一区二区三区在线观看| 欧美一区二区免费| 亚洲欧美日韩中文视频| 在线视频精品一| 亚洲视频在线看| 亚洲一区二区三区在线| 中文日韩在线视频| 国产精品99久久久久久www| 在线视频亚洲一区| 一区二区av| 亚洲午夜91| 亚洲欧美成aⅴ人在线观看| 亚洲女人天堂av| 欧美在线影院在线视频| 久久久久久久久蜜桃| 久久婷婷综合激情| 美国十次了思思久久精品导航| 鲁大师成人一区二区三区| 免费观看日韩| 欧美日韩精品一区| 国产精品久久久久久久久久免费| 国产精品视频你懂的| 国产噜噜噜噜噜久久久久久久久| 国产欧美91| 狠狠色噜噜狠狠色综合久| 伊人天天综合| av成人免费在线| 亚洲免费一区二区| 久久久久久欧美| 欧美日韩成人网| 国产欧美日韩三区| 亚洲国产精品成人一区二区| 一本大道av伊人久久综合| 亚洲一区二区三区在线播放| 欧美专区在线观看一区| 亚洲精品久久嫩草网站秘色| 久久五月激情| 欧美88av| 亚洲欧美一区二区激情| 亚洲精品在线二区| 亚洲国产精品t66y| 欧美激情久久久| 亚洲精品在线视频观看| 国外精品视频| 国内久久婷婷综合| 国产精品成人久久久久| 嫩草国产精品入口| 国产精品视频一区二区高潮| 在线免费不卡视频| 夜夜嗨av一区二区三区四季av | 欧美人牲a欧美精品| av成人老司机| 亚洲视频一区在线| 亚洲国产91精品在线观看| 亚洲福利视频网站| 久久精品国产69国产精品亚洲| 在线看日韩欧美| 国产精品成人免费视频| 国产综合色产在线精品| 亚洲毛片网站| 久久国产主播精品| 欧美视频亚洲视频| 精品动漫3d一区二区三区| 一本色道久久综合亚洲精品小说| 久久精品一区蜜桃臀影院| 欧美视频在线播放| 亚洲精品四区| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品国产三级国产普通话99| 亚洲激情在线观看| 久久精品日产第一区二区| 欧美视频在线一区二区三区| 亚洲精品三级| 欧美激情一区二区| 亚洲国产另类 国产精品国产免费| 欧美一级免费视频| 欧美视频中文字幕在线| 亚洲欧洲日产国产综合网| 欧美一区二区精品| 国产欧美一区二区三区久久人妖 | 国产精品久久久久91| 最近中文字幕mv在线一区二区三区四区| 香蕉av777xxx色综合一区| 国产精品久久波多野结衣| 99精品免费视频| 欧美精品v日韩精品v韩国精品v| 伊人精品久久久久7777| 久久婷婷久久一区二区三区| 黑人巨大精品欧美一区二区小视频| 久久国产免费| 国产一区二区三区在线观看视频 | 国产精品扒开腿爽爽爽视频| 99在线精品视频在线观看| 欧美精品一二三| 亚洲少妇中出一区| 国产精品一区二区久久精品| 欧美一区二区观看视频| 一区二区在线视频| 美女日韩在线中文字幕| 亚洲福利视频网| 欧美日产国产成人免费图片| 日韩视频欧美视频| 国产精品激情偷乱一区二区∴| 亚洲女女做受ⅹxx高潮| 国产主播一区| 欧美激情视频给我| 夜夜爽99久久国产综合精品女不卡| 国产精品二区影院| 久久精品2019中文字幕| 在线观看国产一区二区| 欧美日韩国产精品一区| 欧美一级在线亚洲天堂| 亚洲国产精品福利| 欧美日韩成人激情| 午夜精品免费在线| 影音先锋日韩精品| 欧美日韩免费视频| 久久久91精品国产| 亚洲伦理网站| 国产日韩欧美自拍| 免费在线看成人av| 欧美一区午夜视频在线观看| 伊人男人综合视频网| 国产精品xxxxx| 欧美成人精品一区二区三区| 亚洲欧美日韩在线观看a三区 | 美日韩在线观看| 亚洲一区二区视频在线| 国内外成人免费视频| 欧美区国产区| 久久久久青草大香线综合精品| 一本色道久久88综合日韩精品| 狠狠干综合网| 国产精品av免费在线观看| 久久综合网hezyo| 亚洲欧美在线磁力| 亚洲精品国产系列| 国产中文一区二区| 国产精品r级在线| 嫩草国产精品入口| 欧美一级视频| 亚洲私人影吧| 在线视频精品一| 亚洲欧洲一区二区天堂久久| 狠狠色狠狠色综合日日tαg| 欧美深夜影院| 欧美人成网站| 欧美金8天国| 欧美粗暴jizz性欧美20| 麻豆久久精品| 久久久久成人网| 欧美一区二区三区视频免费播放|