python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例

MongoDB简介

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB应用场景

  • 大而复杂的数据
  • 移动和社会基础设施数据
  • 内容管理和交付
  • 用户数据
  • 管理数据中心

MongoDB优点

  • MongoDB 的架构较少。它是一个文档数据库,它的一个集合持有不同的文档。
  • 从一个到另一个的文档的数量,内容和大小可能有差异。
  • MongoDB 中单个对象的结构很清淅。
  • MongoDB 中没有复杂的连接。
  • MongoDB 提供深度查询的功能,因为它支持对文档的强大的动态查询。
  • MongoDB 很容易扩展。
  • 它使用内部存储器来存储工作集,这是其快速访问的原因。

MongoDB缺点

  • 不支持事务操作
  • 占用空间过大
  • MongoDB没有如MySQL那样成熟的维护工具
  • 无法进行关联表查询,不适用于关系多的数据
  • 复杂聚合操作通过mapreduce创建,速度慢
  • 模式自由, 自由灵活的文件存储格式带来的数据错误

CentOSP安装MongoDB

下载安装MongoDB

下载 3.0.6 版本

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

安装

tar -zxvf mongodb-linux-x86_64-3.0.6.tgz

移动文件夹

mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb

增加环境变量

export PATH=/usr/local/mongodb/bin:$PATH

启动MongoDB

nohup /usr/local/mongodb/bin/mongod --dbpath=/data/db --rest > /usr/local/mongodb/mongo.log 2>&1 &

查看是否启动

netstat -tnlp|grep mongo

端口

27017是默认开的mongodb端口,28017是默认的web访问端口

效果

如果开了外网端口,用浏览器查看是否外网访问

MongoDB常用命令

连接mongoDB

/usr/local/mongodb/bin/mongo

效果

显示数据库列表

show dbs

效果

显示表单(集合)列表

# 切换分支
use mongodb_test
# 显示列表
show tables
# 显示列表
show collections

show tables 和 show collections 效果相同

效果

查询集合所有数据

db.col_test.find()

效果

Python3连接操作MongoDB

安装PyMongo

 pip install pymongo

注意事项

注意,如果创建的数据库、表单中没有数据,是显示不出来数据库的。

显示数据库列表

from pymongo import MongoClient
client_ip = "193.112.61.11"
client_port = 27017
my_client = MongoClient(client_ip, client_port)
db_list = my_client.list_database_names()
print("数据库列表:",db_list)

连接测试

db = my_client.test
print("db:", db)
testDB(my_client)

db_name = 'mongodb_test'
my_db = my_client[db_name]

表单(集合)列表

col_list = my_db.list_collection_names()

没有此表单就创建这个表单,有此表单就连接这个表单

sheet_tab_one = my_db[name]

Python3增删改查MongoDB数据

增加一条数据

# 删除一条数据
def delData_one(my_col, myquery):
  result = my_col.delete_one(myquery)
  print(result.deleted_count,"数据已删除")

增加多条数据

# 删除多条数据
def delData_many(my_col, myquery):
  result = my_col.delete_many(myquery)
  print(result.deleted_count,"数据已删除")

删除数据

# 删除一条数据
def delData_one(my_col, myquery):
  result = my_col.delete_one(myquery)
  print(result.deleted_count,"数据已删除")

删除多条数据

# 删除多条数据
def delData_many(my_col, myquery):
  result = my_col.delete_many(myquery)
  print(result.deleted_count,"数据已删除")

删除一个表单

# 删除一个表单
def delCol(my_col):
  my_col.drop()
  print("删除表单成功")

更新数据

# 修改匹配到的第一条数据
def updateData_one(my_col, myquery, new_val):
  result = my_col.update_one(myquery, new_val)
  print(result.modified_count, "文档已修改")
# 修改匹配到的多条数据
def updateData_many(my_col, myquery, new_val):
  result = my_col.update_many(myquery, new_val)
  print(result.modified_count, "文档已修改")

查询数据

# 查询一条数据
def searchData_one(my_col):
  result = my_col.find_one()
  print(result)
# 查询集合中所有数据
def searchData_many(my_col, limit = 0):
  for item in my_col.find().limit(limit):
    print(item)

根据指定条件查询 或者 正则表达式查询

# my_query = {"name": "ShaShiDi"} # 根据指定条件查询
# my_query = {"name": {"$regex": "^S"}} # 以下实例用于读取 name 字段中第一个字母为 "S" 的数据
# 根据指定条件查询 或者正则表达式查询(比如 my_query = { "name": { "$regex": "^S" } })
def searchData_miss(my_col, my_query):
  print("根据指定条件查询: ", my_query)
  my_doc = my_col.find(my_query)
  for item in my_doc:
    print(item)

排序数据

# 按照某字段排序 默认True是正序,False是倒序
def sortData(my_col, my_key, sortB = True):
  if sortB:
    my_doc = my_col.find().sort(my_key)
  else:
    my_doc = my_col.find().sort(my_key, -1)
  for item in my_doc:
    print(item)

Python3操作MongoDB完整源码

from pymongo import MongoClient
# 数据库列表
def ifnotDB(my_client, db_name):
  db_list = my_client.list_database_names()
  print("数据库列表:",db_list)
  if db_name in db_list:
    print("%s 数据库已存在!"%db_name)
  else:
    print("%s 数据库不存在!"%db_name)
# 测试数据库是否连接成功 返回测试结果
def testDB(my_client):
  db = my_client.test
  print("db:", db)
  return db
# 创建一个数据库 返回数据库对象
def creatDB(my_client, name):
  my_db = my_client[name]
  ifnotDB(my_client, name)
  return my_db
# 表单列表
def ifnotCol(my_db, col_name):
  col_list = my_db.list_collection_names()
  if col_name in col_list:
    print("%s 集合已存在!"%col_name)
  else:
    print("%s 集合不存在!"%col_name)
# 创建一个表单 返回表单对象
def creatCol(my_db, name):
  sheet_tab_one = my_db[name]
  ifnotCol(my_db, name)
  return sheet_tab_one
# 增加一条数据 返回_id
def addData_one(my_col, my_json):
  result = my_col.insert_one(my_json)
  print(result.inserted_id,"增加一条数据")# 返回 _id 字段
  return result.inserted_id
# 增加多条数据 返回所有文档对应的 _id 值
def addData_many(my_col, my_jsons):
  result = my_col.insert_many(my_jsons)
  print(result.inserted_ids)
  return result.inserted_ids
# 删除一条数据
def delData_one(my_col, myquery):
  result = my_col.delete_one(myquery)
  print(result.deleted_count,"数据已删除")
# 删除多条数据
def delData_many(my_col, myquery):
  result = my_col.delete_many(myquery)
  print(result.deleted_count,"数据已删除")
# 删除一个表单
def delCol(my_col):
  my_col.drop()
  print("删除表单成功")
# 修改匹配到的第一条数据
def updateData_one(my_col, myquery, new_val):
  result = my_col.update_one(myquery, new_val)
  print(result.modified_count, "文档已修改")
# 修改匹配到的多条数据
def updateData_many(my_col, myquery, new_val):
  result = my_col.update_many(myquery, new_val)
  print(result.modified_count, "文档已修改")
# 按照某字段排序 默认True是正序,False是倒序
def sortData(my_col, my_key, sortB = True):
  if sortB:
    my_doc = my_col.find().sort(my_key)
  else:
    my_doc = my_col.find().sort(my_key, -1)
  for item in my_doc:
    print(item)
# 查询一条数据
def searchData_one(my_col):
  result = my_col.find_one()
  print(result)
# 查询集合中所有数据
def searchData_many(my_col, limit = 0):
  for item in my_col.find().limit(limit):
    print(item)
# 根据指定条件查询 或者正则表达式查询(比如 my_query = { "name": { "$regex": "^S" } })
def searchData_miss(my_col, my_query):
  print("根据指定条件查询: ", my_query)
  my_doc = my_col.find(my_query)
  for item in my_doc:
    print(item)
if __name__ == "__main__":
  client_ip = "服务器IP地址"
  client_port = 27017
  db_name = 'mongodb_test'
  col_name = 'col_test'
  my_json = {"name": "ShaShiDi", "url": "https://shazhenyu.blog.csdn.net/"}
  # 可以指定_id 我们也可以自己指定 id,插入
  my_jsons = [{"_id": 1,"name": "sha", "url": "https://www.shazhenyu.com"},{"_id": 2,"name": "sha2", "url": "https://shazhenyu.com"}]
  my_query = {"name": "ShaShiDi"}
  my_query_regex = {"name": {"$regex": "^S"}} # 以下实例用于读取 name 字段中第一个字母为 "S" 的数据
  my_key = "_id"
  new_values = {"$set": {"name": "ShaShiDi_new"}}
  my_client = MongoClient(client_ip, client_port)
  testDB(my_client)
  my_db = creatDB(my_client,db_name)
  my_col = creatCol(my_db,col_name)
  # # 增加一条数据
  # addData_one(my_col, my_json)
  # # 增加多条数据
  # addData_many(my_col, my_jsons)
  # # 删除一个符合条件的集合
  # delData_one(my_col, my_query)
  # # 删除所有符合条件的集合
  # delData_many(my_col, my_query)
  # # 删除该集合中的所有文档
  # delData_many(my_col, {})
  # # 删除表单
  # delCol(my_col)
  # # 修改第一个匹配到的文档
  # updateData_one(my_col, my_query, new_values)
  # # 修改所有符合条件的文档
  # updateData_many(my_col, my_query, new_values)
  # # 按照某字段排序 默认True是正序,False是倒序
  # sortData(my_col, my_key)
  # # 根据指定条件查询
  # searchData_miss(my_col, my_query)
  # # 根据正则表达式查询
  # searchData_miss(my_col, my_query_regex)
  # # 查询集合中所有数据 如果写第二个参数,就是指定条数记录查询
  # # searchData_many(my_col)
  # searchData_many(my_col,2)

本文主要讲解了MongoDB安装及Python3操作MongoDB数据库详细方法与实例,更多关于Python3操作MongoDB数据库的技巧请查看下面的相关链接

(0)

相关推荐

  • Python操作MongoDb数据库流程详解

    1.简介 MongoDB是一个基于分布式文件存储的文档数据库,可以说是非关系型(NoSQL,Not Only SQL)数据库中比较像关系型数据库的一个,具有免费.操作简单.面向文档.自动分片.可扩展性强.查询功能强大等特点,对大数据处理支持较好,旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB文档类似于JSON对象.字段值可以包含其他文档,数组及文档数组. 2.应用 MongoDB数据库可以到网

  • Python操作mongodb数据库的方法详解

    本文实例讲述了Python操作mongodb数据库的方法.分享给大家供大家参考,具体如下: 安装pymongo 下载pymongo: https://pypi.python.org/packages/82/26/f45f95841de5164c48e2e03aff7f0702e22cef2336238d212d8f93e91ea8/pymongo-3.4.0.tar.gz#md5=aa77f88e51e281c9f328cea701bb6f3e 安装pymongo: 解压后,cmd进入pymon

  • python连接mongodb集群方法详解

    简单的测试用例 #!/usr/bin/python # -*- coding: UTF-8 -*- import time from pymongo import MongoClient # 连接单机 # single mongo # c = MongoClient(host="192.168.89.151", port=27017) # 连接集群 c = MongoClient('mongodb://192.168.89.151,192.168.89.152,192.168.89.1

  • Python操作Mongodb数据库的方法小结

    本文实例讲述了Python操作Mongodb数据库的方法.分享给大家供大家参考,具体如下: 一 导入 pymongo from pymongo import MongoClient 二 连接服务器 端口号 27017 连接MongoDB 连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,第二个参数为端口port,端口如果不传默认是27017. conn = MongoClient("localhost

  • Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法

    本文实例讲述了Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法.分享给大家供大家参考,具体如下: 前言: 想把QQ日志爬虫(Python)爬下来的日志保存到 MongoDB 里面. 但 insert 的时候报错: E11000 duplicate key error collection: QQ.Blog index: _id_ dup key: { : "965464518_1301232446" } 后来知道错误的原因是:插入的数据和已有数据的 ID

  • Python操作redis和mongoDB的方法

    一.操作redis redis是一个key-value存储系统,value的类型包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希类型).为了保证效率,数据都是缓冲在内存中,在处理大规模数据读写的场景下运用比较多. 备注:默认redis有16个数据库,即db0~db15, 一般存取数据如果不指定库的话,默认都是存在db0中. resid提供2种连接方式:直接连接.连接池连接 1.直接连接示例: import redis # pip3 install

  • python连接、操作mongodb数据库的方法实例详解

    本文实例讲述了python连接.操作mongodb数据库的方法.分享给大家供大家参考,具体如下: 数据库连接 from pymongo import MongoClient import pandas as pd #建立MongoDB数据库连接 client = MongoClient('162.23.167.36',27101)#或MongoClient("mongodb://162.23.167.36:27101/") #连接所需数据库,testDatabase为数据库名: db=

  • Python3操作MongoDB增册改查等方法详解

    MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档.数组及文档数组,非常灵活. 在这一节中,我们就来看看Python 3下MongoDB的存储操作. 1. 准备工作 在开始之前,请确保已经安装好了MongoDB并启动了其服务,并且安装好了Python的PyMongo库. 2. 连接MongoDB 连接MongoDB时,我们需要使用PyMongo库里面的MongoClient.一般来说,传入Mong

  • 浅析Python与Mongodb数据库之间的操作方法

    MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON). 1. 安装Mongodb和pymongo Mongodb的安装和配置 Mongodb的安装教程请网上搜索, 安装完成后,    进行以下配置过程: 1.1 创建目录, 该目录为Mongodb数据文件的存放目录: *注: 本人使用的不是root用户, 所以修改目录的拥有者. * sudo mkdir /data sudo chown -R python:python /data mkdir /da

  • python连接mongodb密码认证实例

    如下所示: from pymongo import MongoClient #建立和数据库系统的连接,指定host及port参数 client = MongoClient('localhost', 27017) #连接mydb数据库,账号密码认证 db = client.mydb db.authenticate("account", "password") #连接表 collection = db.myset #查看全部表名称 db.collection_names

  • Python使用pymongo库操作MongoDB数据库的方法实例

    python操作mongodb数据库 # !/usr/bin/env python # -*- coding:utf-8 -*- """ 使用pymongo库操作MongoDB数据库 """ import pymongo # 1.连接数据库服务器,获取客户端对象 mongo_client=pymongo.MongoClient('localhost',27017) # 2.获取数据库对象 db=mongo_client.myDB # db=mon

  • Mongodb基本操作与Python连接mongodb并进行基础操作的方法

    mongodb是基于分布式文件存储的nosql(非关系型)数据库 虽说是nosqldb, but mongodb 其中的文档可以是关系型的 在mongodb中, 表为集合, 里面的数据为文档; 文档本质就是一条调JSON数据 进入mongodb: mongo 退出mongodb: exit 库操作 显示库: show dbs 选择或者创建: use llsdb # 不管该库是否存在,都会use进入, 如何该库不存在, use进去不存入数据退出时,该库 不会被创建. 所以创建库就use再写入数据.

  • Python访问MongoDB,并且转换成Dataframe的方法

    如下所示: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/7/13 11:10 # @Author : baoshan # @Site : # @File : pandans_pymongo.py # @Software: PyCharm Community Edition import pymongo import pandas as pd def _connect_mongo(host, port, username

  • Python使用mongodb保存爬取豆瓣电影的数据过程解析

    创建爬虫项目douban scrapy startproject douban 设置items.py文件,存储要保存的数据类型和字段名称 # -*- coding: utf-8 -*- import scrapy class DoubanItem(scrapy.Item): title = scrapy.Field() # 内容 content = scrapy.Field() # 评分 rating_num = scrapy.Field() # 简介 quote = scrapy.Field(

  • Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    创建项目 scrapy startproject zhaoping 创建爬虫 cd zhaoping scrapy genspider hr zhaopingwang.com 目录结构 items.py title = scrapy.Field() position = scrapy.Field() publish_date = scrapy.Field() pipelines.py from pymongo import MongoClient mongoclient = MongoClien

  • Centos下升级Python及Mongodb驱动安装问题

    查看python的版本 python -V 如果是2.7以下版本就需要升级了. 首先去官网下载你想要的python压缩包,然后解压.进入主目录执行以下操作(需要GCC编译器支持) ./configure --prefix=/usr/local make all make install make clean make distclean 执行完这些命令之后,在 /usr/local/bin/ 目录下就能看到 python2.7 ,然后试着执行 /usr/local/bin/python2.7 -

  • Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录

    简介: MongoEngine 是一个Document-Object Mapper (想一下ORM, 但它是针对文档型数据库),Python通过它与MongoDB交互.你可能会说那PyMongo也是ORM啊,在Python中一切都是对象,但我们所说的ORM中的Object在指Python中的自定义类,而不是内置类型.MongoEngine或MongoKit将MongoDB的数据映射成自定义类实例,它们都是基于PyMongo的. 我们可以跟关系型数据库的Python客户端MySQLdb,以及ORM

  • python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    爬取TOP500的音乐信息,包括排名情况.歌曲名.歌曲时间. 网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL: http://www.kugou.com/yy/rank/home/1-8888.html 这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三页的信息,多次尝试发现不同的数字即为不同的页面.因此只需更改home/后面的数字即可.由于每页显示的为22首歌曲,所以总共需要23个URL. import requests from bs4 import B

随机推荐