我的编程空间,编程开发者的网络收藏夹
学习永远不晚

pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例

本文首发于个人博客https://kezunlin.me/post/e88f04e5/,欢迎阅读最新内容!pymongo and mongoengine tutorial on ubuntu 16.04Guideversionmongo 2.6.10mongo
2015-08-08

编程热搜

目录