当前位置: 首页 > news >正文

Python开发运维:PyMongo 连接操作 MongoDB

目录

一、理论

1.PyMongo模块

2.Mongo Shell

二、实验

1. Windows11安装MongoDB 7.0.4

2.Windows11安装MongoDB Shell 2.1.0

3.PyMongo 连接 MongoDB(无密码方式)

4.PyMongo 连接 MongoDB(有密码方式)

5.PyMongo 操作 MongoDB (数据库管理)

6.PyMongo 操作 MongoDB (集合管理)

7.PyMongo 操作 MongoDB (文档管理)

三、问题

1.pip安装报错

2.PyCharm如何添加MongoDB插件


 

 

一、理论

1.PyMongo模块

(1)概念

在python当中,一般常用于开发中操作monoDB的模块有如下三个:

1)pymongo2)mongoengine3)moter
它是python中基于pymongo实现的异步操作库,类似于aiomysql,aiomysql也是python基于pymysql实现的异步库。

2.Mongo Shell

(1)概念

MongoShell是一个互动的JavaScript接口的MongoDB,可以使用MongoShell来查询和更新数据以及执行管理操作。

MongoShell是MongoDB发行版的一个组件, 安装并启动MongoDB后,将MongoShell连接到正在运行的MongoDB实例,MongoDB手册中的大多数示例使用 MongoShell,然而,许多驱动程序也提供了与MongoDB类似的接口。

 

二、实验

1. Windows11安装MongoDB 7.0.4

(1)下载

Download MongoDB Community Server | MongoDB

(2)选择版本

92022c0c44df4505953974896bf76e05.png

(3)next下一步

ca5e0b0b431e45f1ba070f1d77dd5a19.png

(4)next下一步

e9c89be4865943dc9edbaa204d20e68d.png

(5)这一步选择Custom

90ef11467b86464d94d7b7e422970175.png

(6)OK

a6e1bcd4d1e94083bdd4f1724b58ef13.png

(7)next下一步

a50c69deba1444769a9eb53aeeab4990.png

(8)next下一步

888806525e79431eb3f830d48e0c4835.png

(9)这里取消Install MongoDB compass,next下一步

24897650cd9c46d5827628cb469fa393.png

(10)Install安装

7abff4d57f8147cc9de92f4b0bfd82c8.png

(11)Finish完成

8e02027e45bb49459ae055fe7dac18c4.png

(12) 服务已自启动

342ee525779749fab2c45e4e84f138f0.png

(13)查看默认配置文件

9381e285ca254f649b03c78f2b1b4466.png

(14)软件目录

c8cc3261c28c4df791a9a947a23b1124.png

 

 

2.Windows11安装MongoDB Shell 2.1.0

(1)下载

Try MongoDB Tools - Download Free Here | MongoDB

(2)选择版本

8a25b167754940b0b7173d6cdcdfc567.png

(3)软件目录

42fb16ff9bc3401d9c94520a1eee4abf.png

(4)进入bin目录

01e48d6850bc4b3fab144292ceae62d9.png

(5)双击mongosh.exe进入命令行界面

d0b748d96c3941b48797f502acbd2ce5.png

(4)创建数据库

fa816d0880a147cc9306f16b16ffbec2.png

(5)批量插入数据

142e84887e304a0584c46424bb675ee7.png

(6)完成数据导入

b3501ff6d27d4b9683e1eda0f2eaff2d.png

(7)navicat查看数据

77e31c0233f34dcfa35922116b668b48.png

(8)给Admin数据库创建账户管理员

ef220997842241a18df8a197779aea04.png

(9)创建用户自己的数据库的角色

90449787b87441c2a87b3139ae140efd.png

(10)navicat查看数据

0a71c8922d0c4fe38c4c939172cc6cfa.png

3.PyMongo 连接 MongoDB(无密码方式)

(1)安装PyMongo

0e32f5d36d4046c4a34a757a0b5fcdaa.png

 

(2)数据库连接

# -*- coding: utf-8 -*-
import pymongo
if __name__ == '__main__':# 无密码连接mongoDBmongo = pymongo.MongoClient('localhost',27017)print(mongo)#切换数据库db = orders = mongo["demo"]#切换数据集orders = db["orders"]#print(orders.find())#查询100条数据for document in orders.find().limit(100):print(document)

① 运行

077146ff756046e5931bd883767b04d9.png

② 输出字典结构.

2829ea1b251a460d808b581047b65c20.png

③运行

0c62c276192d458b89393db5a59f99b1.png

④拿到游标

cbbc067500d44f7da48e7dffd46b6ecd.png

⑤ 运行

5870ace56eef4d1393839b81bdb60f09.png

⑥输出100条数据

60421cb321e84ffa811ec3856c0d0d9c.png

⑦ navicat查看mongodb集合数据

478e7b82c6df4b7cb3a4d8b7a8d6c957.png

 

4.PyMongo 连接 MongoDB(有密码方式)

(1)数据库连接(方式一)

# -*- coding: utf-8 -*-
import pymongo
from urllib.parse import quote_plusif __name__ == '__main__':# 有密码连接mongoDBusername = quote_plus("david")password = quote_plus("123456")# 获取数据库连接对象mongo = pymongo.MongoClient(f"mongodb://{username}:{password}@127.0.0.1:27017/david")print(mongo)# 获取数据库操作对象db = mongo["david"]print(db)#获取集合操作对象user_list = db["user_list"]# 获取数据for document in user_list.find():print(document)

① 密码连接成功

737348ea341142af800ced00e5b34ac8.png
 

 

(2)数据库连接(方式二)

# -*- coding: utf-8 -*-import pymongo
from urllib.parse import quote_plusif __name__ == '__main__':#有密码连接mongoDBmongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')db = mongo["david"]username = "david"password = "123456"db.authenticate(username, password)print(db)collection = db["user_list"]print(collection)for document in collection.find():print(document)

 ① 密码连接

d19262f22b794c7489498d03d133641c.png

②查询数据

23deb5ce7b884f9592cf50b90d59511c.png

③ 成功

8dc264fa09e445b1941908407d4fbbf7.png

④ 成功

0d6c54bad4524e66833c5e045b5b1736.png

5.PyMongo 操作 MongoDB (数据库管理)

(1)数据库管理

# -*- coding: utf-8 -*-import pymongo
# from  bson import ObjectIdif __name__ == '__main__':#有密码连接mongoDBmongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')db = mongo["david"]username = "david"password = "123456"db.authenticate(username, password)# 新建一个数据库orders = db["david"]["orders"]# document = {#     # "_id": ObjectId(),#     # "_id": 1,#     "name": "xiaozhao",#     "number": "00000001",# }# ret = orders.insert_one(document)# 查看数据库列表[只会列出有文档数据的数据库]print(mongo.list_database_names())# print(db["david"].list_indexes())      # 查看集合的索引# print(db.list_collection_names())     # 查看所有库下的所有集合# print(mongo["david"])

(2)新建数据库

7dfc818ea0b64ba3bebe66f4d96b08a4.png

(3)成功

fa68bed29fbe4a25b7f667f46cb45dff.png

(4)查看数据库列表(只会列出有文档数据的数据库)

607632f0aae74d679ff3722ff78e5906.png

(5)shop因为没有内容,所以没有被创建的

8f9707b2ffc14b7b8f3ec87fa2a5e9cc.png

(6)查看所有库下的所有集合

4d60f79e444e4abb93f606b88cc2d1dc.png

(7)成功

c8a54830787a4ba99b8df2277d10d8f7.png


 

6.PyMongo 操作 MongoDB (集合管理)

(1)集合管理

# -*- coding: utf-8 -*-import pymongo
# from  bson import ObjectIdif __name__ == '__main__':#有密码连接mongoDBmongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')db = mongo["david"]username = "david"password = "123456"db.authenticate(username, password)# 查看数据库列表[只会列出有文档数据的数据库]print(mongo.list_database_names())# 查看指定数据的集合列表[只会列出有文档数据的集合]print( db.list_collection_names() )# 获取指定名称对应的集合操作对象user_list = db["orders"]#给集合添加数据document = {"name": "xiaoli","password": "123456"}user_list.insert_one(document)# 删除集合db["david.orders"].drop()# 查看指定数据的集合列表[只会列出有文档数据的集合]print( db.list_collection_names() )

① 查看指定数据的集合列表(只会列出有文档数据的集合)

c20e334e3f984b93991e86c1bef3c6f2.png

② 成功

a42bcc459ec2426bb6c27cb82f594c4f.png

③ david库下新建orders表

3f24a8379cf54d3aa4bd888057b5502b.png

④ 删除

2cd6feb7fa614b5cba07ba16ffca83cd.png

 

7.PyMongo 操作 MongoDB (文档管理)

(1)添加文档

# -*- coding: utf-8 -*-import pymongo
# from  bson import ObjectIdif __name__ == '__main__':#有密码连接mongoDBmongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')db = mongo["david"]username = "david"password = "123456"db.authenticate(username, password)#切换数据集user_list = db["user_list"]# # 添加一个文档# document = {"name": "xiaoming", "mobile": "130XXXXXXXX", "age": 16}# ret = user_list.insert_one(document)# print(ret.inserted_id)  # 返回InsertOneResult对象# 插入文档时,如果没有指定_id,将自动分配一个唯一的id。# 添加多个文档document_list = [{"name": "xiaoqian", "mobile": "136XXXXXXXX", "age": 17},{"name": "xiaosun", "mobile": "135XXXXXXXX", "age": 18},{"name": "xiaowei", "mobile": "139XXXXXXXX", "age": 18},]ret = user_list.insert_many(document_list)# 打印文档_id值列表:print(ret.inserted_ids)

 

① 添加一个文档

83cdedbd37834b71a00cdfab7ba39f73.png

②成功

40a972a295614249866f0ba162e78ba4.png

③ mongosh查看已插入.

6a822570d9da4298901aa5b7772d972c.png

④ 添加多个文档

d78653bb06dc4cb29927806756aad35a.png

⑤ 最后3个显示已插入

334cbcb57ff042ffb2eb31ac7181ad00.png

(2)删除文档

# -*- coding: utf-8 -*-import pymongo
from  bson import ObjectIdif __name__ == '__main__':#有密码连接mongoDBmongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')db = mongo["david"]username = "david"password = "123456"db.authenticate(username, password)#切换数据集user_list = db["user_list"]# 删除一个文档# query1 = {"_id": ObjectId("656803f10a84aec77e378334")}# ret1 = user_list.delete_one(query1)# print(ret1)# print(ret1.deleted_count)## query2 = {"name": "xiaoming"}# ret2 = user_list.delete_one(query2)# print(ret2)# print(ret2.deleted_count)# 删除多个文档query = {"name": "xiaoming"}ret = user_list.delete_many(query)print(ret)print(ret.deleted_count)    # 删除总数# 可以通过删除集合的方式,达到删除所有文档的效果# user_list.drop()

 

①查看最后一条数据id,准备删除2b8a208a547b4e81b2879b3ded013e32.png

 

② 运行删除代码

fc75efafe0bf408a96613b6132ddcdcc.png

③ 已删除

ca38d29e0ba141908c70379ab9cb6d79.png

④ mongosh查看

b6e1303541bd4f258d197743f805ed30.png

⑤ 插入4个xiaoming

879dd6f7a9d84277bea446c6a99a9211.png

⑥显示已插入

4bce662a0ceb40978039256e7afdda6b.png

⑦ 删除多个文档

e19a7000021148a3a0971a519f3a4d5d.png

⑧ 查看运行结果,删除了4个

923c3442993b475884f62123568f6f76.png

⑨ 已删除

3484c5824c1449c5aff243171ec6a2be.png

⑩ navicat显示也已删除

979f470c64f34377853dc51d4335b63a.png

 

(3)更新文档

# -*- coding: utf-8 -*-import pymongo
from  bson import ObjectIdif __name__ == '__main__':#有密码连接mongoDBmongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')db = mongo["david"]username = "david"password = "123456"#db.authenticate(username, password)#切换数据集user_list = db["user_list"]# #更新一条数据# query = {"name": "xiaobai"}# data = {"$set": {"age": 22}}# ret = user_list.update_one(query, data)# print(ret.modified_count)      #修改数量#更新所有文档query = {"mobile": {"$regex": "^13"}}data = {"$inc": {"age": 2}}ret = user_list.update_many(query, data)print(ret)print(ret.modified_count)

①查看当前xiaobai年龄为16岁

d7cf0269d86642279c318365c878e101.png

②修改数据

 caebe2a4df7c480da71723cdc0ee133f.png

③运行成功

ca200d9db0b34b5188cac468b1bbe8c9.png
 

④查看数据

2c1cd9847a0742689e609c81c69e6531.png

 

⑤ xiaobai年龄为22岁

4248ad2cdd1845279bf81daed0152654.png

⑥有2人有手机号

68abc4288ba6499c947c6472c054c9fe.png

⑦ 13开头手机号年龄自增2

25e3d30246104556aa16f0739a219706.png

⑧ 运行成功

0ba491d689ca44a1a1c2337b314d484f.png

 

(4)查询文档

# -*- coding: utf-8 -*-import pymongo
from  bson import ObjectIdif __name__ == '__main__':#有密码连接mongoDBmongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')db = mongo["david"]username = "david"password = "123456"# db.authenticate(username, password)#切换数据集user_list = db["user_list"]# 查看一个文档,返回结果就是一个字典# ret = user_list.find_one()# print(ret["name"])# print(ret["child"])# print(ret["child"]["age"])# 统计文档数量,返回结果就是整数# ret = user_list.count()# print(ret)# # 查看所有文档# for document in user_list.find():#     print(document)# # 投影查询,去掉id# for document in user_list.find({},{"_id":0}):#     print(document)# # 查看文档部分字段,find和find_one的第二个参数表示控制字段的显示隐藏,1为显示,0为隐藏# for document in user_list.find({}, {"_id": 0, "name": 1, "mobile": 1}):#     print(document)# # 条件查询# query = {"age": 20}# document_list = user_list.find(query)# for document in document_list:#     print(document)# # 比较运算符# query = {"age": {"$gt": 17}}# document_list = user_list.find(query)# for document in document_list:#     print(document)# query = {"age": {"$eq": 20}}# document_list = user_list.find(query)# for document in document_list:#     print(document)# # 多个字段排序:# #       sort([("键1",1),("键2",-1)])# document_list = user_list.find().sort("age")# for document in document_list:#     print(document)## # 限制查询结果数量# document_list = user_list.find().limit(3)# for document in document_list:#     print(document)# # 偏移、跳过# #	skip(int)# document_list = user_list.find().limit(3).skip(3)  # 从第3篇文档开始获取3篇文档# for document in document_list:#     print(document)# # 自定义条件函数# document_list = user_list.find({"$where": "this.age==20"})# for document in document_list:#     print(document)document_list = user_list.find({"$where": "this.age>=18"}).sort("age",-1)for document in document_list:print(document)

①查看一个文档

292b53f525694c3d91029ee5409aaf88.png

 

②返回结果就是一个字典

98913bb380be40c6a33cbe2d82d81bf5.png

③修改

8bf087ffb1374917836257e8581d8f77.png

④运行结果

c99bbfbbe7844c328706054e1a8d131f.png

⑤修改

cc6e8fe5b6f540e5a738e2683e55124e.png

⑥ child

6805d9a7260943c3b9d656a0394e1f9c.png

⑦ 修改

a61aec80b9ad4f6d802f55ac2e103995.png

⑧child的age

ea8008bc33ba426a886e6c2895c4839d.png

⑨修改

9831c8b7c3b94345ac88167e0e720c3c.png

⑩查看所有文档

e3802a3f56094192adccfaede23082af.png

⑪投影查询

9cc11923cff34cdbbb2dfbc36441e56b.png

⑫已去掉id

3120bcacac564155b0fdc357089ea7a0.png

⑬查看文档部分字段

4e6653f7e17a4d67bf675225f0292ef5.png

⑭条件查询

699410015f8842ec82db838a44adf5bc.png

⑮条件查询2

064f67ba262747b3bc5b32bb60ebbb73.png

 

⑯比较运算符

ef04a8df514248f2b31ae18ce9c3d0d5.png

⑰多个字段排序

dda20ec9562f4c138635765729e892d7.png

⑱限制查询结果数量

96ef7e32241847638a62220ce871ad94.png

⑲偏移、跳过

b98766223f4b488f9e7b23a4b2a60e32.png

⑳偏移、跳过2

45b8eccd2fff4680b49e69b437c47cbe.png

㉑定义条件函数,倒叙排序

1909607bdde142bca86ecea485b9feab.png

 

 

三、问题

1.pip安装报错

(1)报错

11554adfe80c4f6eb565c909c097327a.png

(2)原因分析

网络问题

(3)解决方法

修改下载源

pip install pymongo -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2411c56257484a6089477c9987b19fc6.png

 

2.PyCharm如何添加MongoDB插件

(1)搜索插件

8093711bbfe34ea7a1d54bd38397441b.png

(2)软件左下角进入插件

759f1c62b5114b01a00ea6da05692c2d.png

(3)测试成功

76cf3322d85b4ecf872915077269ce63.png

 

 

相关文章:

Python开发运维:PyMongo 连接操作 MongoDB

目录 一、理论 1.PyMongo模块 2.Mongo Shell 二、实验 1. Windows11安装MongoDB 7.0.4 2.Windows11安装MongoDB Shell 2.1.0 3.PyMongo 连接 MongoDB(无密码方式) 4.PyMongo 连接 MongoDB(有密码方式) 5.PyMongo 操作 Mo…...

【Github】本地管理github分支

本地管理github分支 学习一些开发tips。以下是万能的GPT教我的: 以下是一套基本的本地管理 GitHub 仓库的指令集。在执行这些指令之前,请确保已经在你的本地机器上安装了 Git 工具,并且已经在 GitHub 上创建了一个仓库。 克隆仓库&#xff1…...

Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap

在 Spring Boot 项目中,我们经常使用 YAML 文件来配置应用程序的属性。在这篇博客中,我将模拟如何在 Java 的 Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap。 1. 介绍 YAML(YAML Aint Markup Language)是一种人类…...

Python正则表达式:match()和search()函数全面解读

更多资料获取 📚 个人网站:ipengtao.com 在Python中,正则表达式是强大的工具,能够用于文本匹配、搜索和替换。re模块提供了许多函数来处理正则表达式,其中match()和search()是两个常用的函数。本文将深入探讨这两个函…...

AIGC ChatGPT4总结Linux Shell命令集合

在Linux中,Shell命令的数量非常庞大,因为Linux提供了各种各样的命令来处理系统任务。这些命令包括GNU核心工具集、系统命令、shell内置命令以及通过安装获得的第三方应用程序命令。以下是一些常见的Linux命令分类及其示例,但请注意,这不是一个全面的列表,因为列出所有命令…...

力扣labuladong——一刷day61

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣865. 具有所有最深节点的最小子树二、力扣1123. 最深叶节点的最近公共祖先三、力扣1026. 节点与其祖先之间的最大差值四、力扣1120. 子树的最大平均值 …...

nacos配置变更导致logback日志异常

问题背景: 线上的服务突然内存爆满,查服务器突然发现,日志全部打印到了/tmp/tomcat.xxx.port目录下,后来对应操作时间,和nacos修改配置是同一时间发生的,但是疑惑的点是,nacos配置变更为什么会引起logback的…...

【spring(五)】SpringMvc总结 SSM整合流程

目录 一、SpringMVC简介: 二、SpringMVC快速入门: 三、SpringMVC bean的管理:⭐ ①配置bean ②扫描bean 四、SpringMVC配置类:⭐ 五、SpringMVC 请求与响应 六、SpringMVC REST风格 七、SSM整合 异常处理: 八、…...

1、windows10系统下Qt5.12.0与卸载

一、安装包下载 1、Qt社区下载 https://download.qt.io/archive/qt/5.12/5.12.10/qt-opensource-windows-x86-5.12.10.exe 2、百度网盘下载 链接:百度网盘 请输入提取码 3、Qt官网下载: Try Qt | 开发应用程序和嵌入式系统 | Qt 二、安装提示 下…...

WebGL/threeJS面试题扫描与总结

什么是 WebGL?什么是 Three.js?请解释three.js中的WebGL和Canvas的区别? WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个…...

Qt connect()方法Qt::ConnectionType

connect() Qt,绑定信号和槽原型: static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection);static QMetaObject::Connection conn…...

HIVE SQL时间函数

目录 current_timestamp()获取当前时间unix_timestamp()获取当前时区的UNIX时间戳from_unixtime()时间戳转日期函数unix_timestamp(string date)日期转时间戳函数提取日期中的年月日时分秒weekofyear (string date)日期转周函数日期比较函数datediff(string enddate, string st…...

linux磁盘的LVM、交换分区以及文件系统

目录 逻辑卷LVM LVM管理 LVM特点 LVM的制作 创建物理卷 创建卷组 创建逻辑卷 格式化文件系统 挂载逻辑卷 LVM的扩容 添加硬盘做物理卷 卷组扩容 扩容逻辑卷 给文件系统扩容 LVM移除 LVM的缩容 交换分区 查看当前交换分区:free Swap:虚…...

【HDFS】ActiveNamenodeResolver#getNamespaces 方法调用点梳理

获取所有的注册在router里的active状态的集群。 /*** Get a list of all namespaces that are registered and active in the* federation.** @return List of name spaces in the federation* @throws IOException Throws exception if the namespace list is not* av…...

算法—双指针

双指针算法可以帮忙把时间复杂度降低一个维度,即原本O(n2)降为O(n);将O(n)降为O(1) 移动零 移动零 题目解析 将所有0移动到末尾保持非0元素相对顺序对数组进行原地操作(不开辟额外空间) 算法原理 数组…...

​[Oracle]编写程序,键盘输入n,计算1+前n项之和。测试案例:输入:10 输出:22.47​

编写程序,键盘输入n,计算1前n项之和。 测试案例: 输入:10 输出:22.47 代码如下: set serveroutput on declare v_sum number:0;v_n number;beginv_n:&n;for i in 1..v_n loopv_sum:v_sumsqrt(i); end loop; d…...

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 本章将介绍视觉SLAM的基本问题之一:如何描述刚体在三维空间中的运动? 旋转向…...

【UGUI】制作用户注册UI界面

这里面主要的操作思想就是 1.打组 同一个事情里面包含两个UI元素都应该打组便于管理和查找 2.设置锚点位置 每次创建一个UI都应该设置他的锚点以便于跟随画布控制自己的:相对位置 3. 设置尺寸(像素大小) 每一次UI元素哪怕是作为父物体的…...

【UE】透视效果

效果 步骤 1. 新建一个空白工程 2. 添加一个第三人称游戏和初学者内容包到内容浏览器 3. 新建一个材质,这里命名为“M_Perspective” 打开“M_Perspective”,设置材质域为后期处理 添加三个“SceneTexture”节点,场景纹理ID选项分别设置为“…...

前端下载文件或者图片方式,window.open或者a标签形式

首先分别讲一下下载文件的方式都有哪些 1.通过a标签的方式下载文件 <a href"http://www.baidu.com" download"baidu.html">下载</a> 我们点击下载&#xff0c;发现是跳转到了百度的首页&#xff0c;并没有真的下载文件。 因为a标签下载只能…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看&#xff0c;后端SQL查询确实返回了数据&#xff0c;但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离&#xff0c;并且ai辅助开发的时候&#xff0c;很容易出现前后端变量名不一致情况&#xff0c;还不报错&#xff0c;只是单…...