pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例
本文首发于个人博客https://kezunlin.me/post/e88f04e5/,欢迎阅读最新内容!
pymongo and mongoengine tutorial on ubuntu 16.04
Guide
version
- mongo 2.6.10
- mongo gui: robo3t-1.3.1
- pymongo 3.9.0
- MongoEngine 0.18.2
install mongodb
sudo apt-get install -y mongodb
mongo shell
mongo --host mongodb0.example.com --port 27017
mongo --version
MongoDB shell version: 2.6.10
see mongo shell
> mongo
# show all dbs
> show dbs
# display current db
>db
test (default database)
# switch or create db
> use mydb
> db.help()
> show collections
posts
system.indexes
> db.posts.help()
> db.posts.find()
help on db and collections
>db.dropDatabase()
>db.posts.drop()
>db.copyDatabase("mydb","backup_mydb")
mongo gui
Robomongo offically changed it"s name and released two different products Studio 3T
and Robo 3T
. Old robomongo
is now called Robo 3T
. Studio 3T
is for professionals.
wget https://download-test.robomongo.org/linux/robo3t-1.3.1-linux-x86_64-7419c406.tar.gz
vim .bashrc
export PATH=/home/kezunlin/program/robo3t/bin:$PATH
allow mongodb to access from remote.
vim /etc/mongodb.conf
#bind_ip = 127.0.0.1
bind_ip = 0.0.0.0
by default, mongodb only allow to access from local.
restart mongodb again
> sudo service mongodb status
mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since 四 2019-09-26 16:11:03 CST; 7s ago
Docs: man:mongod(1)
Main PID: 4917 (mongod)
Tasks: 10
Memory: 3.0G
CPU: 70ms
CGroup: /system.slice/mongodb.service
└─4917 /usr/bin/mongod --config /etc/mongodb.conf
9月 26 16:11:03 node17 systemd[1]: Started An object/document-oriented database.
9月 26 16:11:03 node17 mongod[4917]: warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default
access from remote now
robo3t
python mongodb
pip install pymongo
pip install mongoengine
One library that provides a higher abstraction on top of PyMongo is MongoEngine. MongoEngine is an object document mapper (
ODM
), which is roughly equivalent to a SQL-based object relational mapper (ORM
). The abstraction provided by MongoEngine is class-based, so all of the models you create are classes.
pymongo
def test_mongo_client():
from pymongo import MongoClient
client = MongoClient("localhost", 27017)
db = client["mydb"]
posts = db.posts
post_data = {
"title": "Python and MongoDB",
"content": "PyMongo is fun, you guys",
"author": "Scott"
}
result = posts.insert_one(post_data)
print("One post: {0}".format(result.inserted_id))
post_1 = {
"title": "Python and MongoDB",
"content": "PyMongo is fun, you guys",
"author": "Scott"
}
post_2 = {
"title": "Virtual Environments",
"content": "Use virtual environments, you guys",
"author": "Scott"
}
post_3 = {
"title": "Learning Python",
"content": "Learn Python, it is easy",
"author": "Bill"
}
new_result = posts.insert_many([post_1, post_2, post_3])
print("Multiple posts: {0}".format(new_result.inserted_ids))
# find one
bills_post = posts.find_one({"author": "Bill"})
print(bills_post)
# fine many
scotts_posts = posts.find({"author": "Scott"})
print(scotts_posts)
for post in scotts_posts:
print(post)
client.close()
mongoengine
from mongoengine import *
def test_mongo_engine():
# define collection
class Post(Document):
title = StringField(required=True, max_length=200)
content = StringField(required=True)
author = StringField(required=True, max_length=50)
published = DateTimeField(default=datetime.datetime.now)
connect("mydb",
host="localhost",
port=27017,
alias="default" # must be `default`
)
# mongoengine.connection.MongoEngineConnectionError: You have not defined a default connection
post_1 = Post(
title="Sample Post",
content="Some engaging content",
author="Scott"
)
post_1.save() # This will perform an insert
print(post_1.title)
print(post_1.id)
post_1.title = "A Better Post Title"
post_1.save() # This will perform an atomic edit on "title"
print(post_1.title)
print(post_1.id)
disconnect(alias="default")
test_mongo_engine()
Reference
- mongodb tutorial
- getting-started-with-python-and-mongodb
- introduction-to-mongodb-and-python
- mongodb-orm-for-python
- mongoengine
- mongoengine tutorial
- robomongo
History
- 20190926: created
Copyright
- Post author: kezunlin
- Post link: https://kezunlin.me/post/e88f04e5/
- Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341