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
- 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.
pymongo和mongoengine安装和使用教程 包含常用命令行和代码示例 | pymongo and mongoengine tutorial on ubuntu 16.04的更多相关文章
- Mysql免安装版配置教程和常用命令图
Mysql免安装版配置教程 图文版 配置环境变量 新建一个my.ini文件,添加下面内容 [mysqld] basedir=C:\\software\Mysql\mysql-5.7.14-winx64 ...
- Ubuntu 16.04上anaconda安装和使用教程,安装jupyter扩展等 | anaconda tutorial on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/23014ca5/,欢迎阅读最新内容! anaconda tutorial on ubuntu 16.04 Guide versio ...
- Ternsorflow 学习:000-在 Ubuntu 16.04 上安装并使用 TensorFlow_v1.14 (改)
声明:本人已经对原文链接根据情况做出合理的改动. 本系列文章使用的是Tensorflow v1.14 引言 TensorFlow 是由谷歌构建的用于训练神经网络的开源机器学习软件.TensorFlow ...
- Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法
1 简介 Ubuntu 16.04安装完后,还需要做一些配置才能愉快的使用,包括添加软件源.安装搜狗输入法.Chrome浏览器.网易云音乐.配置快捷键.安装git等等,下面就跟着我来配置吧,just ...
- Ubuntu 16.04安装Matlab 2016b教程
由于代码需要依赖Linux环境,只好尝试着装MATLAB,然而各种问题接踵而至,开始了由MATLAB引发的三天Linux探寻之旅-- 下载Matlab 2016b for Linux https:// ...
- Ubuntu 16.04 上安装 CUDA 9.0 详细教程
https://blog.csdn.net/QLULIBIN/article/details/78714596 前言: 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu1 ...
- Ubuntu 16.04安装QQ国际版图文详细教程
因工作需要,我安装了Ubuntu 16.04,但是工作上的很多事情需要QQ联系,然而在Ubuntu上的WebQQ很是不好用,于是在网上搜索了好多个Linux版本的QQ,然而不是功能不全 ...
- [最直白版]一步一步教你用VMware Workstation12安装Ubuntu 16.04和VMware Tools的教程
[最直白版]Win10下一步一步教你用 VMware Workstation12安装Ubuntu 16.04和VMware Tools的教程 安装过程中使用的软件(要保证电脑里面有下列三个东西): 1 ...
- Ubuntu 16.04下OLSR协议安装教程
OLSR是根据MANET的要求,在传统的LS(Link state)协议的基础上优化的. OLSR中的关键概念是多点转播(MPRs),MPRs是在广播洪泛的过程中挑选的转发广播的节点.传统的链路状态协 ...
随机推荐
- Nginx日志常见时间变量解析
$request_time 官方解释:request processing time in seconds with a milliseconds resolution; time elapsed b ...
- JS-for循环练习题
1.大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配? //驮100石粮食,大马需要50匹 for(var a=0;a<=50;a++){ //驮1 ...
- 【linux命令 】文件特殊权限(SUID、SGID、SBIT)
chmod 2770 /home/admins,刚看到这个命令,有点不解,后边770分别表示用户,组,其他人,前面的2不知道代表的是什么意思.百度之后发现2是代表八进制数,也是一种权限,它的三个bit ...
- 浏览器及Windows常用快捷键汇总
浏览器常用快捷键: F5 刷新 Ctrl+N 打开新窗口 Ctrl+T 打开新标签 Ctrl + O 打开浏览器的时候打开文件 Ctrl+Shift+N 隐身模式打开窗口 F2 F3 切换 Ct ...
- mysql分布式
一,复制,对数据进行备份,实现搞可用,提高吞吐量,实现高性能. 1,主从架构 2,多主架构 3,主主从从 4,主备 (实际用得多) 二,分片/分库分表 () 1,垂直拆分 1,垂直分表 2,垂直分库 ...
- 双系统卸载ubuntu
转载自https://www.jianshu.com/p/30795695be95 如果开机是这样子的,就是ubuntu引导windows(专业名词gpt) ubuntu引导windows 那么先进w ...
- Tuple<T1,T2,.........T> 元组简单使用
元组:一个数据结构,逗号分隔,用于传递一个程序或者操作系统的一系列值得组合 NET Framework直接支持一至七元素得数组 Tuple<T1> Tuple<T1,T2> T ...
- Emoji 映射编码
Emoji官网:https://emojipedia.org/ Name Unified DoCoMo KDDI Softbank Google Wechat black sun with r ...
- Prism_Commanding(2)
Commanding 除了提供对要在视图中显示或编辑的数据的访问之外,ViewModel还可能定义可由用户执行的一个或多个动作或操作.用户可以通过UI执行的动作或操作通常被定义为命令.命令提供了一种方 ...
- 中文版 Apple 官方 Swift 教程《The Swift Programming Language》
简介 欢迎使用 Swift 关于 Swift 版本兼容性 Swift 初见 Swift 版本历史记录 Swift 教程 基础部分 基本运算符 字符串和字符 集合类型 控制流 函数 闭包 枚举 类和结构 ...