day107:MoFang:Python操作MongoDB数据库:PyMongo
目录
PyMongo
1.PyMongo安装
pip install pymongo
2.数据库连接
1.数据库连接,无密码
import pymongo
mongo = pymongo.MongoClient("mongodb://127.0.0.1:27017/")
2.数据库连接,有密码
# 方式1:
import pymongo
from urllib import parse
username = parse.quote_plus('mofang') # 对用户名进行编码
password = parse.quote_plus('123456') # 对密码进行编码
database = "mofang" # 数据库名称
host = "127.0.0.1"
port = "27017"
mongo = pymongo.MongoClient('mongodb://%s:%s@%s:%s/%s' % ( username, password, host, port, database)) # 方式2:
import pymongo
from urllib import parse
username = parse.quote_plus('mofang') # 对用户名进行编码
password = parse.quote_plus('123456') # 对密码进行编码
database = "mofang" # 数据库名称
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017') # 组装成url进行连接
my_db = mongo["mofang"]
my_db.authenticate(username,password) # 方式3:
import pymongo
from urllib import parse
username = parse.quote_plus('root') # 对用户名进行编码
password = parse.quote_plus('123456') # 对密码进行编码
host = "127.0.0.1"
port = "27017"
database = "mofang" # 数据库名称
mongo = pymongo.MongoClient('mongodb://%s:%s@%s:%s/admin' % ( username, password, host, port))
my_db = mongo[database]
my_collection = my_db["my_collection"] # 没有往集合里面保存文档之前,mongdb不会真正创建集合!
3.数据库管理
import pymongo # 数据库连接
mongo = pymongo.MongoClient("mongodb://127.0.0.1:27017/") # 创建数据库
my_db = mongo["my_db"] # 没有往集合里面保存文档之前,mongdb不会真正创建集合! # 查看数据库列表
print(mongo.list_database_names()) # 上面的 my_db 因为没有内容,所以没有被创建的。 # 数据库的删除,仅仅是清空所有集合就可以了
4.集合管理
import pymongo
mongo = pymongo.MongoClient("mongodb://127.0.0.1:27017/")
my_db = mongo["my_db"]
my_collection = my_db["my_collection"] # 没有往集合里面保存文档之前,mongdb不会真正创建集合!
# 查看集合列表
print(my_db.list_collection_names())
'''删除集合'''
# 方式11.
my_collections = my_db["notify_list"]
my_collections.drop() # 删除成功返回true,如果集合不存在,返回false
# 方式2
my_db.drop_collection("notify_list")
5.文档管理
1.添加文档
from pymongo import MongoClient
connect = MongoClient("mongodb://127.0.0.1:27017")
my_db = connect["mofang"]
my_collections = my_db["my_collections"] # 添加一条数据
document = { "name": "xiaoming", "mobile": "13012345678","age":16,"sex":True}
ret = my_collections.insert_one(document)
print(ret.inserted_id) # 返回主键ID # 添加多条数据
data_list = [
{ "name": "xiaobai", "mobile": "13322345678","age":16,"sex":False},
{ "name": "xiaohei", "mobile": "13322345678","age":20,"sex":True},
{ "name": "xiaohong", "mobile": "13322345678","age":13,"sex":False},
{ "name": "xiaolan", "mobile": "13322345678","age":17,"sex":True},
{ "name": "xiaolv", "mobile": "13322345678","age":17,"sex":True},
{ "name": "xiaolong", "mobile": "13322345678","age":16,"sex":False},
{ "name": "xiaofei", "mobile": "13322345678","age":18,"sex":True},
]
ret = my_collections.insert_many(data_list)
print(ret.inserted_ids)
2.查询文档
import pymongo
mongo = pymongo.MongoClient("mongodb://127.0.0.1:27017/")
my_db = mongo["my_db"]
my_collection = my_db["my_collection"]
# 查看一个文档
ret = my_collection.find_one() # 查询不到则返回None
print(ret)
# 查看所有文档
for document in my_collection.find(): # 查询不到,返回空列表
print(document)
# 查看文档部分字段,find和find_one的第二个参数表示控制字段的显示隐藏,1为显示,0为隐藏
for document in my_collection.find({},{ "_id": 0, "name": 1, "mobile": 1 }):
print(document)
# 条件查询
query = { "age": 18 }
document_list = my_collection.find(query) # find_one则返回一个文档
for document in document_list:
print(document)
# 比较运算符
query = { "age": {"$gt":17} }
document_list = my_collection.find(query)
for document in document_list:
print(document)
# 排序显示
# 单个字段排序:
'''
sort("键", 1) 升序
sort("键",-1) 降序
'''
# 多个字段排序:
'''
sort([("键1",1),("键2",-1)])
'''
document_list = my_collection.find().sort("age")
for document in document_list:
print(document)
# 限制查询结果数量
document_list = my_collections.find().limit(3)
print(document_list)
3.删除文档
import pymongo
mongo = pymongo.MongoClient("mongodb://127.0.0.1:27017/")
my_db = mongo["my_db"]
my_collection = my_db["my_collection"]
# 删除一个文档
query = {"name":"xiaoming"}
my_collection.delete_one(query)
# 删除多个文档
query = { "mobile": {"$regex": "^130"} }
ret = my_collection.delete_many(query)
print("删除了%d个文档" % ret.deleted_count)
# 查询一条数据出来并删除
# 返回一条数据,如果没有,则返回None
query = {"name":"xiaobai"}
document = my_collection.find_one_and_delete(query)
print(document) # {'_id': ObjectId('5fd1e9f17ee514c5ea91823c'), 'name': 'xiaobai', 'mobile': '13322345678', 'age': 16, 'sex': False}
4.更新文档
from pymongo import MongoClient
# 数据库链接,必须保证当前系统能正常访问mongodb!!!
connect = MongoClient("mongodb://root:123@127.0.0.1:27017/admin")
my_db = connect["mofang"]
my_collection = my_db["my_collections"] """更新文档"""
"""按条件更新一个文档的指定数据"""
query = { "name": "xiaofei" }
upsert = { "$set": { "age": 22 } }
ret = my_collection.update_one(query, upsert)
print(ret.modified_count) # 0 表示没有任何修改,1表示修改成功 """按条件累加/累减指定数值一个文档的指定数据"""
query = { "name": "xiaofei" }
upsert = { "$inc": { "age": -1 } } # 累减
# upsert = { "$inc": { "age": 1 } } # 累加
ret = my_collection.update_one(query, upsert)
print(ret.modified_count) """更新多条数据"""
# 把所有以"133"开头的手机码号的文档,全部改成15012345678
query = { "mobile": {"$regex":"^150"} }
upsert = { "$set": { "mobile": "18512345678" } }
ret = my_collection.update_many(query, upsert)
print(ret.modified_count)
day107:MoFang:Python操作MongoDB数据库:PyMongo的更多相关文章
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战
python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...
- python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用
python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...
- python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用
python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...
- Python 操作 mongodb 数据库
原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...
- python 操作mongoDB数据库
网上关于python 操作mongoDB的相关文章相对不是很多,并且质量也不是很高!下面给出一个完整的 增删改查示例程序! #!/usr/bin/python # -*- coding: utf-8 ...
- python操作mongodb数据库
一.MongoDB 数据库操作 连接数据库 import pymongo conn = pymongo.Connection() # 连接本机数据库 conn = pymongo.Connection ...
- 【转】Python操作MongoDB数据库
前言 MongoDB GUI 工具 PyMongo(同步) Motor(异步) 后记 前言 最近这几天准备介绍一下 Python 与三大数据库的使用,这是第一篇,首先来介绍 MongoDB 吧,,走起 ...
- python 操作mongodb数据库模糊查询
# -*- coding: utf-8 -*-import pymongoimport refrom pymongo import MongoClient #创建连接#10.20.66.106clie ...
- python操作MONGODB数据库,提取部分数据再存储
目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条.几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数. ...
随机推荐
- vue下载图片
async works(obj) { await this.axios({ method: 'get', url: `entryFormControll ...
- 基础篇二:Linux常用系统命令
Linux常用系统命令 pwd 打印当前目录 cd /目录 切换目录 cd .. 切换上一级目录 ls 显示目录 ls -a 包括隐藏文件 ls -l 以长格式列出 alias 当前系统所有别名 ...
- 在LaTeX中使用BibTeX时的一个问题及其解决:编译PDF不随bib文件更新
问题:更新bib文件之后,编译tex文件输出的PDF文件没有相应的更新. 原理: bbl文件才是引文的信息,bib文件只是用于生成bbl文件的一个"数据集"而已. 一般来说,LaT ...
- Promise 一些注意点
Promise是一个构造函数,其身上有all.race.resolve.reject这些方法,都可以通过 Promise. 调用. 注意点1 Promise构造函数接受一个参数 => funct ...
- 这几年专注于流程管理与RPA落地
这些年专注于流程管理与RPA落地,乙方有些辛苦,但,也得到了客户的认可,开心. 做过多个流程管理咨询,发现信息化落地后孤岛很多,RPA 刚好可以作为各个系统的有效补充,把系统有机的结合在一起. 企业信 ...
- C语言基础题 22年5月
(十六进制 %x 20.0f是%f long 是%ld unsigned int %#o ) 编程题: 整数浮点数的上溢下溢 strcpy函数代码 int search(char *s, ch ...
- word多级标题自动编号设置
1.选择段落 ->多级列表 ->定义新的多级列表 2.级别设置 ,这里操作比较繁琐,要多注意[输入编号的格式]要通过[包含的级别编号来自]这一项目来设定 标题1: 标题2 标题3: 标题4 ...
- html、css、js 压缩或混淆方法
普通的压缩代码的方法包括在线工具和服务器打包处理,有一个共同的痛点是:压缩后的代码无法还原成原始的带有注释的源代码.正如大家所知,在源代码中调试Bug事半功倍.在线工具HCJCompress(ihon ...
- MySql生成ER【StarUML】文件
1. 背景 要画ER图,一个个打费时费力,StarUML文件打开是json.那么就有可能自动生成. 2. 效果 把表结构生成好,自己只要维护关系即可. 3. 代码 import lombok.Data ...
- 给宝宝的AC自动机启蒙指南(宝宝的第一本)
AC自动机 根据已有经验,学完虚数会变虚,然后写出的代码就不是人能看的了 所以我们来学实树罢(喜) 以上为废话博客背景 有限状态自动机 首先我们来了解一下自动机是啥. 说的通俗一点,我们可以把自动机看 ...