日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoEngine MongoDB 的 ORM 库

發布時間:2024/4/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoEngine MongoDB 的 ORM 库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NoSQL Manager for MongoDB操作

遠程連接服務器數據庫


pymongo的弊端

pymongo來操作mongodb數據庫,但是直接把數據庫的操作代碼寫在腳本中,使得應用代碼的耦合性太強,不利于代碼的優化管理

mongoengine是一個對象文檔映射器(ODM),相當于基于sql對象關系映射器(ORM)

安裝mongoengine

pip install mongoengine

事先聲明一個繼承mongoengine.document的類

from mongoengine import * connect('0713db', host='localhost', port=27017) class Users(Document):name = StringField(required=True, max_length=200)age = IntField(required=True)user1=Users(name='XIXI',age=11) user1.save() user2=Users(name='fiona',age=12) user2.save() print('user1:',user1) print('user2:',user2) print('user1的name:',user1.name) print('user2的name:',user2.name) print('-'*50)users = Users.objects.all() #返回所有的文檔對象列表 for u in users:print("name:",u.name,",age:",u.age)

#查詢年齡大于等于10,小于30的,按姓名排列 from mongoengine import * connect('test', host='localhost', port=27017) import datetime class Users(Document):name = StringField(required=True, max_length=200)age = IntField(required=True) User_search = Users.objects(age__gte=10,age__lt=30).order_by('name') #倒序('-name'for search in User_search:print(search.name)#查詢name為詹姆斯的人 user_search = Users.objects(name='詹姆斯') for search in user_search:print(search.name)#修改name為詹姆斯的age加1 user_update = Users.objects(name='詹姆斯').update(inc__age=1) #修改完成之后要在查詢一遍 user_search = Users.objects(name='詹姆斯') for user in user_search:print(user.name) 修改name為詹姆斯的age為18user_update=Users.objects(name='詹姆斯').update(set__age=18) #user_update返回的是數量 user_search = Users.objects(name='詹姆斯') from mongoengine import * from datetime import datetime#連接數據庫:test # connect('test') # 連接本地test數據庫 connect('test', host='127.0.0.1', port=27017#username='test', password='test' 如果數據庫用戶密碼不記得或者記錯 會報錯 # Defining our documents # 定義文檔user,post,對應集合user,post class User(Document):# required為True則必須賦予初始值email = StringField(required=True)first_name = StringField(max_length=50)last_name = StringField(max_length=50)date = DateTimeField(default=datetime.now(), required=True)# Embedded documents,it doesn’t have its own collection in the database class Comment(EmbeddedDocument):content = StringField()name = StringField(max_length=120)class Post(Document):title = StringField(max_length=120, required=True)# ReferenceField相當于foreign keyauthor = ReferenceField(User)tags = ListField(StringField(max_length=30))comments = ListField(EmbeddedDocumentField(Comment))# 允許繼承meta = {'allow_inheritance': True}class TextPost(Post):content = StringField()class ImagePost(Post):image_path = StringField()class LinkPost(Post):link_url = StringField()class Page(DynamicDocument):title = StringField(max_length=200, required=True)date_modified = DateTimeField(default=datetime.now())添加數據john = User(email='john@example.com', first_name='John', last_name='Tao').save() ross = User(email='ross@example.com') ross.first_name = 'Ross' ross.last_name = 'Lawley' ross.save()comment1 = Comment(content='Good work!',name = 'LindenTao') comment2 = Comment(content='Nice article!') post0 = Post(title = 'post0',tags = ['post_0_tag']) post0.comments = [comment1,comment2] post0.save()post1 = TextPost(title='Fun with MongoEngine', author=john) post1.content = 'Took a look at MongoEngine today, looks pretty cool.' post1.tags = ['mongodb', 'mongoengine'] post1.save()post2 = LinkPost(title='MongoEngine Documentation', author=ross) post2.link_url = 'http://docs.mongoengine.com/' post2.tags = ['mongoengine'] post2.save()# Create a new page and add tags page = Page(title='Using MongoEngine') page.tags = ['mongodb', 'mongoengine'] page.save()

查看數據

for post in Post.objects:print post.titleprint '=' * len(post.title)if isinstance(post, TextPost):print post.contentif isinstance(post, LinkPost):print 'Link:', post.link_url

通過引用字段直接獲取引用文檔對象

for post in TextPost.objects:print post.contentprint post.author.email au = TextPost.objects.all().first().author print au.email

通過標簽查詢

for post in Post.objects(tags='mongodb'):print post.title num_posts = Post.objects(tags='mongodb').count() print 'Found %d posts with tag "mongodb"' % num_posts

多條件查詢(導入Q類)

User.objects((Q(country='uk') & Q(age__gte=18)) | Q(age__gte=20))

更新文檔

ross = User.objects(first_name = 'Ross') ross.update(date = datetime.now()) User.objects(first_name='John').update(set__email='123456@qq.com') //對 lorem 添加商品圖片信息 lorempic = GoodsPic(name='l2.jpg', path='/static/images/l2.jpg') lorem = Goods.objects(id='575d38e336dc6a55d048f35f') lorem.update_one(push__pic=lorempic)

刪除文檔

ross.delete()

nosql manafer for MongoDB Professional的使用

https://www.cnblogs.com/TurboWay/p/8213656.html

NoSQL Manager for MongoDB 破解

刪除這兩個地方的東西就好了運行 -->regedit HKEY_CURRENT_USER\Software\NoSQL Manager Group刪除該文件夾C:\ProgramData\NoSQL Manager GroupNoSQL Manager for Cassand重啟,繼續免費試用30天 官方軟件安裝后,若無注冊碼會有 30 天的試用期。若30天試用期滿了后,可進行以下操作進行重置:刪除注冊表:HKEY_CURRENT_USER\Software\NoSQL Manager Group 備份appConfig.xml文件(里面有你的數據庫配置信息,包括帳號密碼) 刪除應用數據:C:\ProgramData\NoSQL Manager Group 或者使用 RunAsDate 軟件進行時間重置也可以達到這個效果 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的MongoEngine MongoDB 的 ORM 库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。