pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例 | pymongo and mongoengine tutorial on ubuntu 16.04

本文首发于个人博客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

History

  • 20190926: created

Copyright

原文地址:https://www.cnblogs.com/kezunlin/p/12000652.html

时间: 2024-10-10 18:40:13

pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例 | pymongo and mongoengine tutorial on ubuntu 16.04的相关文章

Ubuntu 16.04 安装QQ解决方案

1 前言 经过3天的折腾,研究了一下Linux下安装QQ的几种方法,总结一下,Linux下安装QQ的方法主要有以下几种: 安装wineQQ国际版 VirtualBox安装windows,再安装QQ,然后开启无缝模式 Genymotion模拟器安装安卓QQ crossover安装TMQQ2013或者DeepinQQ 首先声明,Linux下没有一种方法能够达到windows qq的那种体验,所以有很多安装方法,每种方法都或多或少有不爽的地方,qq对于linux很不友好,所以博主安装后的体会是: 珍惜

Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法

1 简介 Ubuntu 16.04安装完后,还需要做一些配置才能愉快的使用,包括添加软件源.安装搜狗输入法.Chrome浏览器.网易云音乐.配置快捷键.安装git等等,下面就跟着我来配置吧,just do it 2 版本选择 如果你是小白,不想折腾,可以直接选择安装deepin linux,中文名”深度Linux”,这个是国内目前最好用的Linux之一,开箱即用,常用软件都安装好了,甚至连最新版的QQ都有,mac风格的界面也很漂亮. 但是,作为一个程序员,还是要使用Ubutnu,之前博主用过Ub

Ubuntu 16.04下安装64位谷歌Chrome浏览器

最近把Ubuntu系统更新到16.04,发现自带的Firefox浏览器有一些问题,但是懒得安装插件,折腾已知的问题,于是决定安装Chrome看看,果然,很多问题没有了. 因为安装的Linux是64位的Ubuntu 16.04系统,所以本人决定也安装64位的谷歌Chrome浏览器.在 Ubuntu 16.04 中,要想使用谷歌的 Chrome 浏览器,可以通过命令行的方式手动安装. Ubuntu 16.04中安装Chromium浏览器  http://www.linuxidc.com/Linux/

Ubuntu 16.04 上安装 CUDA 9.0 详细教程

https://blog.csdn.net/QLULIBIN/article/details/78714596 前言: 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式): 大家可以先将CUDA文件下载下来,但是最好不要急于安装,一定要先将NVIDIA给出官方指导手册仔细看一下,然后再找几篇好的博客看一下,大致了解一下CUDA的安装过程,对安装过程中可能出现的

Ubuntu 16.04安装QQ国际版图文详细教程

      因工作需要,我安装了Ubuntu 16.04,但是工作上的很多事情需要QQ联系,然而在Ubuntu上的WebQQ很是不好用,于是在网上搜索了好多个Linux版本的QQ,然而不是功能不全,就是界面丑到爆,要么就是不稳定:最后,找到了个人认为最好用的QQ-WineQQ国际版. 说明:一开始,我在Ubuntu 16.04下安装的QQ版本是Wineqq2013SP6-20140102-Longene,但后来发现这个版本QQ在linux下问题很多,比如不能 用键盘输入密码,QQ表情使用失灵,有

Ubuntu 16.04下OLSR协议安装教程

OLSR是根据MANET的要求,在传统的LS(Link state)协议的基础上优化的. OLSR中的关键概念是多点转播(MPRs),MPRs是在广播洪泛的过程中挑选的转发广播的节点.传统的链路状态协议每个节点都转发它收到信息的第一份拷贝,同它相比,OLSR很大程度上减少了转发的信息.在OLSR协议中,链路状态信息都是由被挑选为MPRs的节点产生的,这样减少了在网络中洪泛的控制信息,实现了第二步优化.第三步优化是MPR节点只选择在MPR或者MPR选择者之间传递链接状态信息.因此,同传统LS协议相

如何在Ubuntu 16.04安装的Git【转】

转自:https://www.howtoing.com/how-to-install-git-on-ubuntu-16-04/ 介绍 现代软件开发中不可或缺的工具是某种版本控制系统. 版本控制系统允许您在源级别跟踪您的软件. 您可以跟踪更改,恢复到以前的阶段,并分支以创建文件和目录的备用版本. 其中最流行的版本控制系统是git ,分布式版本控制系统. 许多项目将它们的文件保存在一个git存储库中,像GitHub和Bitbucket这样的网站使得代码的共享和贡献变得简单和有价值. 在本指南中,我们

Ubuntu 16.04系统下CUDA8.0配置Caffe教程

由于最近安装了Ubuntu 16.04,本文教程的特点是不需要降级gcc的版本,毕竟cuda8.0已经支持gcc5以上(默认不支持,实际支持). 本文是在参考caffe官网教程以及http://www.linuxidc.com/Linux/2015-07/120449.htm结合自己总结经验而来,对此表示感谢. Ubuntu 14.04安装Nvidia CUDA7.5并搭建Python Theano深度学习开发环境http://www.linuxidc.com/Linux/2015-09/123

在 Ubuntu 16.04 上安装 LEMP 环境之图文向导

导读 LEMP 是个缩写,代表一组软件包(注解 ① L:Linux OS,E:Nginx 网络服务器,M:MySQL/MariaDB 数据库和 P:PHP 服务端动态编程语言),它被用来搭建动态的网络应用和网页.这篇教程会教你怎么在 Ubuntu 16.04 的服务器上安装 LEMP (Nginx 和 MariaDB 以及 PHP7). 步骤 1:安装 Nginx 服务器 在 Ubuntu 16.04 安装 Nginx Nginx 是一个先进的.资源优化的 Web 服务器程序,用来向因特网上的访