localhost 已拒绝连接_【Python】MongoDB数据库的连接和操作
安装
Python 要连接 MongoDB 需要 MongoDB 驱动。
pip安装:
python3 -m pip3 install pymongo
创建数据库
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")mydb = myclient["loaderman"]
注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
判断数据库是否已存在:
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
dblist = myclient.list_database_names()# dblist = myclient.database_names()if "loaderman" in dblist: print("数据库已存在!")
注意:database_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_database_names()。
创建集合
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")mydb = myclient["loaderman"]
mycol = mydb["t_user"]
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['loaderman']
collist = mydb. list_collection_names()# collist = mydb.collection_names()if "t_user" in collist: # 判断 sites 集合是否存在 print("集合已存在!")
插入数据
用 insert_one() 方法,该方法的第一参数是字典 name => value 对。
插入单个数据:
import pymongo
def main(): myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient["loaderman"] mycol = mydb["t_user"] mydict = {"name": "loaderman", "age": "18", "des": "码上加油站,一起来加油"} x = mycol.insert_one(mydict) print(x.inserted_id)
if __name__ == "__main__": main()
输出:
5f05c019381b3ce588e04696
效果:
插入多条数据:
插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。
import pymongo
def main(): myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient["loaderman"] mycol = mydb["t_site"] mylist = [ {"name": "Taobao", "alexa": "100", "url": "https://www.taobao.com"}, {"name": "QQ", "alexa": "101", "url": "https://www.qq.com"}, {"name": "Facebook", "alexa": "10", "url": "https://www.facebook.com"}, {"name": "知乎", "alexa": "103", "url": "https://www.zhihu.com"}, {"name": "Github", "alexa": "109", "url": "https://www.github.com"} ]
x = mycol.insert_many(mylist)
# 输出插入的所有文档对应的 _id 值 print(x.inserted_ids)
if __name__ == "__main__": main()
输出:
[ObjectId('5f05c0c0bacd4ef964560988'), ObjectId('5f05c0c0bacd4ef964560989'), ObjectId('5f05c0c0bacd4ef96456098a'), ObjectId('5f05c0c0bacd4ef96456098b'), ObjectId('5f05c0c0bacd4ef96456098c')]
效果:
查询数据
使用 find_one() 方法来查询集合中的一条数据。
find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。 可以对find() 中设置参数来过滤数据。
如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。
import pymongo
def main(): myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient["loaderman"] mycol = mydb["t_site"] # 使用 find_one() 方法来查询集合中的一条数据。 x = mycol.find_one() print("***********查询集合中的一条数据。************") print(x) print("***********查询集合中的所有数据************") # find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。 for x in mycol.find(): print(x) print("***********除了 alexa 字段外,其他都返回************") # find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。 for x in mycol.find({}, {"alexa": 0}): print(x) # 根据指定条件查询,查找 name 字段为 "QQ" 的数据: myquery = {"name": "QQ"} mydoc = mycol.find(myquery) print("***********根据指定条件查询************") for x in mydoc: print(x) # 读取 name 字段中第一个字母 ASCII 值大于 H" 的数据 myquery2 = {"name": {"$gt": "H"}} mydoc2 = mycol.find(myquery2) print("***********读取 name 字段中第一个字母ASCII值大于H的数据************") for x in mydoc2: print(x)
# 正则表达式查询,读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 {"$regex": "^R"} myquery = {"name": {"$regex": "Q"}} print("***********正则表达式查询************") mydoc = mycol.find(myquery) for x in mydoc: print(x) print("***********返回指定条数记录3条数据************") # 返回指定条数记录,查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。 myresult = mycol.find().limit(3) # 输出结果 for x in myresult: print(x)
if __name__ == "__main__": main()
运行输出:
***********查询集合中的一条数据。************{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}***********查询集合中的所有数据************{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c494'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://www.facebook.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c495'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c496'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}***********除了 alexa 字段外,其他都返回************{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'url': 'https://www.taobao.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c494'), 'name': 'Facebook', 'url': 'https://www.facebook.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c495'), 'name': '知乎', 'url': 'https://www.zhihu.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c496'), 'name': 'Github', 'url': 'https://www.github.com'}***********根据指定条件查询************{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}***********读取 name 字段中第一个字母ASCII值大于H的数据************{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c495'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}***********正则表达式查询************{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}***********返回指定条数记录3条数据************{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c494'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://www.facebook.com'}
更新数据
import pymongo
def main(): myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient["loaderman"] mycol = mydb["t_site"] myquery = {"alexa": "100"} newvalues = {"$set": {"alexa": "12345"}} #修匹配到的第一条记录 mycol.update_one(myquery, newvalues) # 输出修改后的 "sites" 集合 for x in mycol.find(): print(x) myquery = {"name": {"$regex": "^F"}} newvalues = {"$set": {"alexa": "66666"}} #修改所有匹配到的记录 x1 = mycol.update_many(myquery, newvalues) # 输出修改后的 "sites" 集合 for x in mycol.find(): print(x) print(x1.modified_count, "文档已修改")
if __name__ == "__main__": main()
输出:
{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'alexa': '12345', 'url': 'https://www.taobao.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c494'), 'name': 'Facebook', 'alexa': '12356', 'url': 'https://www.facebook.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c495'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c496'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'alexa': '12345', 'url': 'https://www.taobao.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c494'), 'name': 'Facebook', 'alexa': '66666', 'url': 'https://www.facebook.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c495'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c496'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}1 文档已修改
排序
sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
import pymongo
def main(): myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient["loaderman"] mycol = mydb["t_site"] mydoc = mycol.find().sort("alexa") for x in mydoc: print(x)
if __name__ == "__main__": main()
输出:
{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c495'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c496'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c492'), 'name': 'Taobao', 'alexa': '12345', 'url': 'https://www.taobao.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c494'), 'name': 'Facebook', 'alexa': '66666', 'url': 'https://www.facebook.com'}
删除数据
用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
使用 delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。
delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档。
使用 drop() 方法来删除一个集合。
import pymongo
def main(): myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient["loaderman"] mycol = mydb["t_site"] myquery = {"name": "Taobao"}
mycol.delete_one(myquery)
# 删除后输出 for x in mycol.find(): print(x) myquery = {"name": {"$regex": "^F"}}
x = mycol.delete_many(myquery) print(x.deleted_count, "个文档已删除") x = mycol.delete_many({})
print(x.deleted_count, "个文档已删除") mycol.drop()
if __name__ == "__main__": main()
输出:
{'_id': ObjectId('5f05c10bfd36a6335af1c493'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c494'), 'name': 'Facebook', 'alexa': '66666', 'url': 'https://www.facebook.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c495'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}{'_id': ObjectId('5f05c10bfd36a6335af1c496'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}1 个文档已删除3 个文档已删除
完
码上加油站
一起来加油
长按扫码关注
点“在看”你懂得
localhost 已拒绝连接_【Python】MongoDB数据库的连接和操作相关推荐
- vue项目出现此地址,但是访问时显示,嗯… 无法访问此页面localhost 已拒绝连接
vue项目出现此地址,但是访问时显示,嗯- 无法访问此页面localhost 已拒绝连接. 出现原因:端口号8081被占用 解决办法: 1.先查看端口号,win+R打开命令提示符,输入netstat ...
- Python MySQL数据库的连接以及基本操作
Python MySQL数据库的连接以及基本操作 一.数据库的连接 1.直接连接 2.连接池连接 二. 数据库的基本操作 1.执行函数 2.创建数据表 3.删除表 4.插入函数 6.删除函数 7.状态 ...
- python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例
本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...
- 后端代码之服务端 - MongoDB数据库的连接、重启测试与(Studio3T)查看 - 讲解篇
文章目录 前言 一. 在项目中安装Mongoose中间件 二. 安装完毕,新建一个路由作为测试路由 通过WebStorm软件,打开项目,编辑index.js文件: 三.重启服务,浏览器查看:测试连接是 ...
- mysql拒绝远程连接_解决Mysql数据库拒绝远程连接和忘记密码的问题
解决数据库忘记密码的问题 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 编辑m ...
- localhost 已拒绝连接。
Tomcat的localhost:8080拒绝访问. 直接在tomcat的bin目录下双击startup.bat,启动就好了,再访问localhost:8080就可以出来了.
- mongodb 搜索速度_初识 MongoDB 数据库
初识 MongoDB 数据库 前言 Flask 基础框架在之前的三篇文章中写完了.想要学习 web 相关的同学可以自己回顾翻一下,相信看完了,你也可以写出来一个简单的小案例来炫耀一波! 说到 web ...
- python常见数据库的连接方式【游标】及【pandas】数据读取
本文介绍以下数据库的连接方式,及数据的增删改查 下方中用到的数据,均为随机数据,无实际业务意义. Mysql-游标及pandas连接方式 PostgreSQL-游标及pandas连接方式 Oracle ...
- Python mongodb数据库
介绍 在前面的课程中我们学习了mysql这种关系型数据库,那么接下来,我们会来学习一种非数据库mongodb,mongodb数据库主要用于海量存储,常被用在数据采集项目中. 内容 mongodb的介绍 ...
- 怎么获取mysql的链接字符串_如何从数据库获取连接字符串
小编典典 获取连接字符串的最简单方法是使用Visual Studio中的"服务器资源管理器"窗口(菜单 视图 , 服务器资源管理器 ),然后从该窗口连接到服务器. 然后,您可以在已 ...
最新文章
- 2021年春季学期-信号与系统-第七次作业参考答案-第二小题
- php将中文插入数据库出现乱码
- 中国上榜前50名富豪当中,有多少人完全是通过白手起家?
- 逆向工程生成的Mapper.xml以及*Example.java详解
- 小米平板5 pro 解锁 Bootloader
- 网页转化成pdf,网页转换图片,wkhtmltopdf,wkhtmltoimage使用小结
- 用html制作三角形九九乘法表,用js实现打印九九乘法表
- Java各个版本区别
- diy一个android手机版下载,家居3D设计DIY
- 交流异步电机的Modelica模型
- Goldfish 介绍
- Linux Cgroup cpu子系统实验
- killall 命令的用法
- ORACLE经验汇总
- Iphone5 图片适配
- 论坛灌水机 Delphi代码
- 时间戳转日期格式 +new Date
- 2008-12-29日xp系统补丁导致iis无法启动
- 数学建模-商人过河问题
- 中国紫外线消毒灯行业深度分析与发展前景规划研究报告2022-2028年版
热门文章
- C++ primer 第14章 操作重载与类型转换
- Socket程序从Windows移植到Linux下的一些注意事项
- Vue 生命周期中 mounted( ) 和 created( ) 的区别
- Nexus 安装(Linux 环境)
- LINQ to JavaScript
- HTTP 协议知识点总结(一)
- 修改 cmd 字体为 Consolas
- 第 三 十 八 天:Linux 的 LVM 逻 辑 卷 管 理
- 图片延迟加载和滑动翻页
- RDIFramework.NET(.NET快速开发框架) 答客户问(2014-02-23)