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

news2024/11/17 17:42:21

目录

一、理论

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)pymongo

2)mongoengine

3)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__':
    # 无密码连接mongoDB
    mongo = 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_plus

if __name__ == '__main__':
    # 有密码连接mongoDB
    username = 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_plus

if __name__ == '__main__':
    #有密码连接mongoDB
    mongo = 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 ObjectId

if __name__ == '__main__':
    #有密码连接mongoDB
    mongo = 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 ObjectId

if __name__ == '__main__':
    #有密码连接mongoDB
    mongo = 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 ObjectId

if __name__ == '__main__':
    #有密码连接mongoDB
    mongo = 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 ObjectId

if __name__ == '__main__':
    #有密码连接mongoDB
    mongo = 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 ObjectId

if __name__ == '__main__':
    #有密码连接mongoDB
    mongo = 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 ObjectId

if __name__ == '__main__':
    #有密码连接mongoDB
    mongo = 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1276587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Module build failed: Error: ENOENT: no such file or directory

前言 这个错误通常发生在Node.js 和 vue,js项目中,当你试图访问一个不存在的文件或目录时。在大多数情况下,这是因为你的代码试图打开一个不存在的文件,或者你的构建系统(例如Webpack)需要一个配置文件,但找…

java调用mysql存储过程

一、背景 在mysql上定义了存储过程,然后我想每1分钟调用一次存储过程。于是我设置了一个event,但是这个事件默认的运行周期为天,我尝试修改成minute却不生效。所以我决定通过java代码来调用存储过程。 二、mysql存储过程 CREATE DEFINERroot…

排序算法:n个0~1000之间的整数,将他们从大到小排序

上榜理由: 如果没见过这种排序题,可能首先想到的就是常用的排序算法,比如快速排序,归并排序,那如果输入的n足够大,时间复杂度肯定比较高。其实题目0-1000的范围是一个题眼,所以一定有更优的排序…

将本地项目推送到github

欢迎大家到我的博客浏览。将本地项目推送到github | YinKais Blog 本地项目上传至 GitHub<!--more--> 1、进入项目根目录&#xff0c;初始化本地仓库 git init 2、创建密钥&#xff1a;创建 .ssh 文件夹&#xff0c;并进入 .ssh 文件夹 mkdir .ssh cd .ssh/ 3、生成…

海云安谢朝海:开发安全领域大模型新实践 人工智能助力高效安全左移

2023年11月29日&#xff0c;2023中国&#xff08;深圳&#xff09;金融科技大会成功举行&#xff0c;该会议是深圳连续举办的第七届金融科技主题年度会议&#xff0c;也是2023深圳国际金融科技节重要活动之一。做好金融工作&#xff0c;需要兼顾创新与安全&#xff0c;当智能体…

深入理解Docker容器核心技术

文章目录 1. Linux命名空间&#xff08;Namespaces&#xff09;1.1 示例&#xff1a;PID命名空间 2. 控制组&#xff08;cgroups&#xff09;2.1 示例&#xff1a;内存控制组 3. 联合文件系统&#xff08;UnionFS&#xff09;3.1 示例&#xff1a;查看镜像的分层结构 4. Docker…

ASP.NET Core 使用IIS调试出现505.24错误

最近一直再学习asp.net 相关的东西&#xff0c;主要是为前端app提供一个webapi接口。在使用iis调试程序时出现HTTP Error 500.24 - Internal Server Error错误&#xff0c;搞了好久才最终解决。 1.在项目中增加web.config配置文件 2.将配置文件改为如下内容 <?xml version…

MATLAB 模型参考自适应控制 - Model Reference Adaptive Control

系列文章目录 文章目录 系列文章目录前言一、参考模型二、扰动与不确定性模型三、直接 MRAC名义模型参数更新间接 MRAC估计器模型和控制器增益参数更新学习修正参考文献 前言 模型参考自适应控制模块计算控制动作&#xff0c;使不确定的受控系统跟踪给定参考被控对象模型的行为…

C# Serilog--可记录异常完整路径

1.Serilog安装 2.控制台代码 --设置日志记录器的最小级别为 Debug&#xff0c;即只记录 Debug 级别及以上的日志信息 --.WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day)&#xff1a;将日志信息写入到指定路径的文件中&#xff08;这里的路径…

企业真题(数组\面向对象-基础)

二、企业真题 1. 数组有没有length()这个方法? String有没有length()这个方法&#xff1f;&#xff08;*蓝&#xff09; 数组没有length()&#xff0c;是length属性。 String有length() 2. 有数组int[] arr&#xff0c;用Java代码将数组元素顺序颠倒&#xff08;闪*购&…

软件测试计划书

测试计划书 1.测试参考文档和测试提交文档 2.测试进度计划 3.测试资源 4.系统风险、优先级 5.测试策略 6.缺陷管理 7.测试停止标准 软件开发全文档下载进入主页。

linux后端基础---笔记整理(tmux、vim、shell、ssh/scp、git、thrift、docker)

目录 1.Linux常用文件管理命令 2.tmux终端复用器/vim命令式文本编辑器 3.Shell语法 3.1 Shell—版本3.2 新建一个test.sh文件3.3 Shell文件—运行方式3.4 Shell—注释3.5 Shell—变量3.6 Shell—默认变量&#xff0c;文件参数, “$”的用法3.7 Shell—数组3.8 shell—expr命令…

WebSocket 前端使用vue3+ts+elementplus 实现连接

1.配置连接 websocket.ts文件如下 import { ElMessage } from "element-plus";interface WebSocketProps {url: string; // websocket地址heartTime?: number; // 心跳时间间隔&#xff0c;默认为 50000 msheartMsg?: string; // 心跳信息&#xff0c;默认为pingr…

Edge 旧版本回退

微软官网 下载策略文件 下载后&#xff0c;解压打开 cad 包&#xff0c;把里面的 Windows\ADMX\ 下 3 个 *.admx 文件解压到 C:\Windows\PolicyDefinitions Windows\ADMX\zh-CN 下 3 个 *.adlm 文件解压到 C:\Windows\PolicyDefinitions\zh-CN Windows 搜索 gpedit&#xff…

水果软件FL Studio最新21.1.1.3750汉化版

FL Studio水果音乐编曲软件中文版,一款强大的音乐制作软件,可以进行音乐编曲、剪辑、录音、混音。FL Studio21.1.1.3750中文版是数字音频工作站 (DAW) 之一&#xff0c;日新月异。它是一款录音机和编辑器&#xff0c;可让您不惜一切代价制作精美的音乐作品并保存精彩的活动画廊…

分布式ID生成框架Leaf升级踩坑

背景&#xff1a; 在项目中需要一个统一的拿单号等唯一ID的服务&#xff0c;就想起了之前用到的leaf&#xff0c;但是因为项目要求&#xff0c;leaf的版本不符合&#xff0c;需要做一些升级 项目地址&#xff1a;https://github.com/Meituan-Dianping/Leaf 升级点&#xff1…

LangChain的函数,工具和代理(三):LangChain中轻松实现OpenAI函数调用

在我之前写的两篇博客中:OpenAI的函数调用,LangChain的表达式语言(LCEL)中介绍了如何利用openai的api来实现函数调用功能&#xff0c;以及在langchain中如何实现openai的函数调用功能&#xff0c;在这两篇博客中&#xff0c;我们都需要手动去创建一个结构比较复杂的函数描述变量…

【前端】-【electron】

文章目录 介绍electron工作流程环境搭建 electron生命周期&#xff08;app的生命周期&#xff09;窗口尺寸窗口标题自定义窗口的实现阻止窗口关闭父子及模态窗口自定义菜单 介绍 electron技术架构&#xff1a;chromium、node.js、native.apis electron工作流程 桌面应用就是…

SQL Server 2016(为数据表Porducts添加数据)

1、实验环境。 某公司有一台已经安装了SQL Server 2016的服务器&#xff0c;并已经创建了数据库PM。 2、需求描述。 在数据库PM中创建表products&#xff0c;"编号"列的值自动增长并为主键。然后使用T-SQL语句为表格插入如下数据。 3、实验步骤。 1、使用SSMS管理工…

2022年高校大数据挑战赛B题图像信息隐藏求解全过程论文及程序

2022年高校大数据挑战赛 B题 图像信息隐藏 原题再现&#xff1a; 互联网的快速发展&#xff0c;给图像、视频的传播方式带来巨大变化。图像作为媒体的重要载体&#xff0c;每天有大量的原创图像公开在互联网上&#xff0c;如何保护图像版权的同时不破坏原始的图像一直是图像处…