魔坊APP项目-11-PyMongo、数据库连接,管理、集合管理、文档管理(添加文档、查询文档、删除文档、更新文档)
PyMongo
安装:
pip install pymongo
一、数据库连接
数据库连接,无密码
from pymongo import MongoClient# 数据库链接,必须保证当前系统能正常访问mongodb!!!
connect = MongoClient('mongodb://127.0.0.1:27017/')# 创建/切换数据库,数据库不存在则会库中有文档以后,自动创建
my_db = connect['mofang']
print(my_db) # 数据库信息# 创建/进入集合,集合不存在则会集合中有文档以后,自动创建
my_collections = my_db['my_collections']
print(my_collections) # 集合信息
数据库连接,有密码
from pymongo import MongoClient
# 数据库链接,必须保证当前系统能正常访问mongodb!!!"""方式1:如果帐号密码没有特殊字符"""
# connect = MongoClient('mongodb://mofang:123456@127.0.0.1:27017/mofang')"""方式2:当前库的管理员连接"""
# from urllib import parse# username = parse.quote_plus('mofang') # 对用户名进行编码
# password = parse.quote_plus('123456') # 对密码进行编码
# database = parse.quote_plus('mofang') # 对数据库进行编码
# connect = MongoClient('mongodb://%s:%s@127.0.0.1:27017/%s' % (username, password, database))
# my_db = connect['mofang']
# my_collections = my_db['my_collections']"""方式3:基于超级管理员身份连接,不需要当前库的管理员了"""
from urllib import parse
username = parse.quote_plus('root') # 对用户名进行编码
password = parse.quote_plus('123') # 对密码进行编码
database = parse.quote_plus('admin') # 对数据库进行编码
connect = MongoClient('mongodb://%s:%s@127.0.0.1:27017/%s' % (username, password, database))
my_db = connect['mofang']
my_collections = my_db['my_collections']
# 添加一篇文档
data = {'name': 'xiaoming1号', 'sex': True, 'age':17}
ret = my_collections.insert_one(data)
print(ret.inserted_id)
二、数据库管理
from pymongo import MongoClient
# 数据库链接,必须保证当前系统能正常访问mongodb!!!connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collecctions = my_db['my_collections']# 查看所有数据库[除了三个基本数据库以外,其他数据库只会显示有文档数据的]
ret = connect.list_database_names()
print(ret) # ['admin', 'config', 'local', 'mofang']
ret = my_db.list_collection_names()
print(ret) # ['my_collections']# 数据库的删除,仅仅是清空所有集合就可以了
三、集合管理
from pymongo import MongoClient
# 数据库链接,必须保证当前系统能正常访问mongodb!!!connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collecctions = my_db['my_collections']# 查看所有数据库[除了三个基本数据库以外,其他数据库只会显示有文档数据的]
# ret = connect.list_database_names()
# print(ret) # ['admin', 'config', 'local', 'mofang']
# ret = my_db.list_collection_names()
# print(ret) # ['my_collections']
# 删除集合的方式1
my_collecctions = my_db['notify_list']
my_collecctions.drop()# 删除集合的方式2
my_db.drop_collection('notify_list')
四、文档管理
1.添加文档
from pymongo import MongoClient
# 数据库链接,必须保证当前系统能正常访问mongodb!!!
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
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.查询文档
from pymongo import MongoClient# 数据库链接,必须保证当前系统能正常访问mongodb
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collections = my_db['my_collections']"""获取一条"""
# document = my_collections.find_one()
# print(document) # {'_id': ObjectId('5fd21237d883925209b60067'), 'name': 'xiaoming1号', 'sex': True, 'age': 17}
# 获取数据中的信息
# print(document['name']) # xiaoming1号"""获取多条数据"""
# document_list = my_collections.find()
# print(document_list)
# for document in document_list:
# print(document)
# print(document['_id'])"""字段投影:只显示部分字段,1表示显示,0表示隐藏"""
# document_list = my_collections.find({}, {'name': 1, '_id': 0})
# for document in document_list:
# print(document)"""基于查询条件获取数据"""
# 值相等
# query = {'name': {'$eq': 'xiaoming'}}
# query = {'name': 'xiaoming'}
# document = my_collections.find_one(query)
# print(document) # {'_id': ObjectId('5fd2184326c8493bb4e2ace3'), 'name': 'xiaoming', 'mobile': '13012345678', 'age': 16, 'sex': True}"""
query = {"age":{"$gt":17}} age > 17
query = {"age":{"$gte":17}} age >= 17
query = {"age":{"$lte":17}} age <= 17
query = {"age":{"$lt":17}} age < 17
query = {"age":{"$ne":17}} age != 17
query = {"age":{"$in":[16,17]}} age in [16,17]
"""
# query = {'age': {'$in': [16, 18]}}
# document_list = my_collections.find(query)
# for document in document_list:
# print(document)"""排序"""
"""
单个字段:sort("age",-1) # 倒序sort("age",1) # 升序
多个字段:sort([("age",-1),("_id",1)])
"""
# document_list = my_collections.find().sort('age', -1)
# document_list = my_collections.find().sort([('age', -1), ('_id', 1)])
# for document in document_list:
# print(document)"""限制结果"""
document_list = my_collections.find().limit(3)
for document in document_list:print(document)
3.删除文档
from pymongo import MongoClient
# 数据库链接,必须保证当前系统能正常访问mongodb
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collections = my_db['my_collections']"""删除文档"""
# 删除一个文档
query = {'name': 'xiaoming'}
ret = my_collections.delete_one(query)
print(ret.deleted_count) # 1:删除成功 0:没有删除的数据# 删除多个文档
query = {'name': 'xiaoming1号'}
ret = my_collections.delete_many(query)
print(ret.deleted_count) # 大于0:删除成功 0:没有删除的数据# 查询一条数据出来并删除
# 返回一条数据,如果没有,则返回None
query = {'name': 'xiaobai'}
document = my_collections.find_one_and_delete(query)
print(document) # {'_id': ObjectId('5fd218accf506de09fbecd68'), '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_collections = my_db['my_collections']"""更新文档"""
"""按条件更新一个文档的指定数据"""
query = {'name': 'xiaofei'}
upsert = {'$set': {'age': 22}}
ret = my_collections.update_one(query, upsert)
print(ret.modified_count) # 0 表示没有任何修改,1表示修改成功"""按条件累加/累减指定数值一个文档的指定数据"""
query = {'name': 'xiaofei'}
upsert = {'$inc': {'age': -1}} # 累减
upsert = {'$inc': {'age': 1}} # 累加
ret = my_collections.update_one(query, upsert)
print(ret.modified_count)"""更新多条数据"""
# 把所有以"133"开头的手机码号的文档,全部改成15012345678
query = {'mobile': {'$regex': '^133'}}
upsert = {'$set': {'mobile': '15012345678'}}
ret = my_collections.update_many(query, upsert)
print(ret.modified_count)
魔坊APP项目-11-PyMongo、数据库连接,管理、集合管理、文档管理(添加文档、查询文档、删除文档、更新文档)相关推荐
- 魔坊APP项目-16-种植园、websocket协议、服务端基于socket提供服务(基于房间管理分发信息)、种植园页面展示
种植园 我们需要完成的种植园,是一个互动频繁,并且要求有一定即时性的模块,所以如果继续基于http协议开发,那么需要通过ajax发送大量http请求,同时因为http本身属于单向通讯,所以服务端无法主 ...
- 魔坊APP项目-26-直播、docker安装OSSRS流媒体直播服务器、基于APICloud的acLive直播推流模块实现RTMP直播推流、直播流管理
一.docker安装OSSRS流媒体直播服务器 在外界开发中, 如果要实现直播功能.常用的方式有: 1. 通过第三方接口来实现.可以申请阿里云,腾讯云,网易云,七牛云的直播接口,根据文档,下载集成SD ...
- 魔坊APP项目-17-种植园,商城页面、服务端提供商品api,解决App打包编译以后的跨域限制、客户端获取商品列表并进行展示,集成Alipayplus模块完成支付
种植园 一.商城页面 orchard.html,代码: <!DOCTYPE html> <html> <head><title>用户中心</tit ...
- 魔坊APP项目-15-邀请好友(业务逻辑流程图、服务端提供邀请好友的二维码生成接口、客户端通过第三方识别微信二维码,服务端提供接口允许访问、App配置私有协议,允许第三方应用通过私有协议,唤醒APP)
邀请好友 1.业务逻辑流程图 客户端提供点击"邀请好友"以后的页面frame,html/invite.html,代码: <!DOCTYPE html> <html ...
- 魔坊APP项目-19-种植园,我的背包、道具购买
种植园 一.我的背包 打开背包,orchard.html,代码: <!DOCTYPE html> <html> <head><title>用户中心< ...
- 魔坊APP项目-20-种植园,背包显示道具、用户购买道具的时候,判断背包存储是否达到上限、背包解锁
种植园 一.背包显示道具 在背包中显示道具,会涉及到用户的背包格子的显示以及解锁问题,所以我们需要在服务端准备一个参数信息, 用于保存种植园中用户的业务参数,例如: 格子的初始化数量, 每次解锁背包格 ...
- 魔坊APP项目-24-种植园,修复宠物喂食时出现的饱食度没有增加的bug、宠物挂了的bug问题
种植园 修复宠物喂食时出现的饱食度没有增加的bug 在feed方法中监听是否喂食成功的pet_feed_success通知中, 保存更新后的hp_time. my_orchard.html代码: &l ...
- 魔坊APP项目-23-种植园,宠物和种植物的状态改变、宠物的状态改动
种植园 宠物和种植物的状态改变 1. 宠物的状态改动 2. 种植物的状态改动 3. 道具的使用 宠物的状态改动 因为宠物有多个,每个宠物会有不同的初始生命的饥饿时间,所以我们提前在mysql中进行配置 ...
- 魔坊APP项目-18-种植园,基于支付宝提供的沙箱测试环境开发支付接口、服务端, 处理支付结果的同步通知和异步通知、修复页面底部菜单无法被点击的BUG
种植园 一.基于支付宝提供的沙箱测试环境开发支付接口 沙箱环境: https://openhome.alipay.com/platform/appDaily.htm?tab=info 开发文档: ht ...
最新文章
- 经验之谈|别再在CNN中使用Dropout了
- Scala中的/,%,++,--
- 【BootCDN】前端使用开源免费的 CDN 加速服务
- struts2从一个action跳到另一个action的配置方法
- Binary String Reconstruction CodeForces - 1352F(思维+构造)
- View 事件传递体系知识梳理(1) 事件分发机制
- 60 MM配置-后勤发票校验-设置重复发票检查
- Cannot find executable for CFBundle 解决办法
- Opencv中Get2D()与cvSet2D() 的坐标问题
- GPS信号防丢失、干扰和欺骗——基于雷达的解决方案
- 《终极算法--机器学习和人工智能如何重塑世界》
- 【GAMES101现代计算机图形学入门笔记】Lec05 光栅化1(三角形)
- 软工实践第二次作业之个人项目
- HDFS java接口——实现目录增删文件读写
- web实现html页面思维导图效果
- 猫盘救砖方案(2021年最新版)
- 选手通过评委打分,输出名次问题
- 内网ip如何变成公网ip?快解析转换域名映射外网访问
- 编译原理学习笔记(十八)~LL(1)文法
- 如有定义int a=128; 则输出语句printf(“%o”,a);的输出结果为?。
热门文章
- Arduino使用三色\\双色LED
- Archlinux安装屏保墙纸软件(livewallpaper)
- 一语收录(2016-09-18)
- LCYZ NOIP模拟赛 —— By t14t41t[大神的题都是四星up]
- python培训班深圳-深圳python线下培训班哪家靠谱
- 爱是一种的需要,不一定要得到----《小娘惹》
- python什么时候要构造方法init_Python之类方法、__new__方法和__init__方法介绍
- 【Java基础笔记】类型转换
- java--面向对象----->图书管理系统
- 发蓝色磷光的铱配合物(ppy)2Ir(POP)PF6-齐岳试剂