这篇文章将为大家详细讲解有关python数据库开发之MongoDB安装及Python3操作MongoDB数据库的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
大而复杂的数据
移动和社会基础设施数据
内容管理和交付
用户数据
管理数据中心
MongoDB 的架构较少。它是一个文档数据库,它的一个集合持有不同的文档。
从一个到另一个的文档的数量,内容和大小可能有差异。
MongoDB 中单个对象的结构很清淅。
MongoDB 中没有复杂的连接。
MongoDB 提供深度查询的功能,因为它支持对文档的强大的动态查询。
MongoDB 很容易扩展。
它使用内部存储器来存储工作集,这是其快速访问的原因。
不支持事务操作
占用空间过大
MongoDB没有如MySQL那样成熟的维护工具
无法进行关联表查询,不适用于关系多的数据
复杂聚合操作通过mapreduce创建,速度慢
模式自由, 自由灵活的文件存储格式带来的数据错误
下载 3.0.6 版本
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
安装
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
移动文件夹
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
增加环境变量
export PATH=/usr/local/mongodb/bin:$PATH
nohup /usr/local/mongodb/bin/mongod --dbpath=/data/db --rest > /usr/local/mongodb/mongo.log 2>&1 &
netstat -tnlp|grep mongo
27017是默认开的mongodb端口,28017是默认的web访问端口
效果
如果开了外网端口,用浏览器查看是否外网访问
/usr/local/mongodb/bin/mongo
效果
show dbs
效果
# 切换分支 use mongodb_test # 显示列表 show tables # 显示列表 show collections
show tables 和 show collections 效果相同
效果
db.col_test.find()
效果
pip install pymongo
注意,如果创建的数据库、表单中没有数据,是显示不出来数据库的。
from pymongo import MongoClient client_ip = "193.112.61.11" client_port = 27017 my_client = MongoClient(client_ip, client_port) db_list = my_client.list_database_names() print("数据库列表:",db_list)
db = my_client.test print("db:", db) testDB(my_client)
db_name = 'mongodb_test' my_db = my_client[db_name]
表单(集合)列表
col_list = my_db.list_collection_names()
没有此表单就创建这个表单,有此表单就连接这个表单
sheet_tab_one = my_db[name]
# 删除一条数据 def delData_one(my_col, myquery): result = my_col.delete_one(myquery) print(result.deleted_count,"数据已删除")
# 删除多条数据 def delData_many(my_col, myquery): result = my_col.delete_many(myquery) print(result.deleted_count,"数据已删除")
删除数据
# 删除一条数据 def delData_one(my_col, myquery): result = my_col.delete_one(myquery) print(result.deleted_count,"数据已删除")
删除多条数据
# 删除多条数据 def delData_many(my_col, myquery): result = my_col.delete_many(myquery) print(result.deleted_count,"数据已删除")
删除一个表单
# 删除一个表单 def delCol(my_col): my_col.drop() print("删除表单成功")
# 修改匹配到的第一条数据 def updateData_one(my_col, myquery, new_val): result = my_col.update_one(myquery, new_val) print(result.modified_count, "文档已修改")
# 修改匹配到的多条数据 def updateData_many(my_col, myquery, new_val): result = my_col.update_many(myquery, new_val) print(result.modified_count, "文档已修改")
# 查询一条数据 def searchData_one(my_col): result = my_col.find_one() print(result)
# 查询集合中所有数据 def searchData_many(my_col, limit = 0): for item in my_col.find().limit(limit): print(item)
根据指定条件查询 或者 正则表达式查询
# my_query = {"name": "ShaShiDi"} # 根据指定条件查询 # my_query = {"name": {"$regex": "^S"}} # 以下实例用于读取 name 字段中第一个字母为 "S" 的数据 # 根据指定条件查询 或者正则表达式查询(比如 my_query = { "name": { "$regex": "^S" } }) def searchData_miss(my_col, my_query): print("根据指定条件查询: ", my_query) my_doc = my_col.find(my_query) for item in my_doc: print(item)
# 按照某字段排序 默认True是正序,False是倒序 def sortData(my_col, my_key, sortB = True): if sortB: my_doc = my_col.find().sort(my_key) else: my_doc = my_col.find().sort(my_key, -1) for item in my_doc: print(item)
from pymongo import MongoClient # 数据库列表 def ifnotDB(my_client, db_name): db_list = my_client.list_database_names() print("数据库列表:",db_list) if db_name in db_list: print("%s 数据库已存在!"%db_name) else: print("%s 数据库不存在!"%db_name) # 测试数据库是否连接成功 返回测试结果 def testDB(my_client): db = my_client.test print("db:", db) return db # 创建一个数据库 返回数据库对象 def creatDB(my_client, name): my_db = my_client[name] ifnotDB(my_client, name) return my_db # 表单列表 def ifnotCol(my_db, col_name): col_list = my_db.list_collection_names() if col_name in col_list: print("%s 集合已存在!"%col_name) else: print("%s 集合不存在!"%col_name) # 创建一个表单 返回表单对象 def creatCol(my_db, name): sheet_tab_one = my_db[name] ifnotCol(my_db, name) return sheet_tab_one # 增加一条数据 返回_id def addData_one(my_col, my_json): result = my_col.insert_one(my_json) print(result.inserted_id,"增加一条数据")# 返回 _id 字段 return result.inserted_id # 增加多条数据 返回所有文档对应的 _id 值 def addData_many(my_col, my_jsons): result = my_col.insert_many(my_jsons) print(result.inserted_ids) return result.inserted_ids # 删除一条数据 def delData_one(my_col, myquery): result = my_col.delete_one(myquery) print(result.deleted_count,"数据已删除") # 删除多条数据 def delData_many(my_col, myquery): result = my_col.delete_many(myquery) print(result.deleted_count,"数据已删除") # 删除一个表单 def delCol(my_col): my_col.drop() print("删除表单成功") # 修改匹配到的第一条数据 def updateData_one(my_col, myquery, new_val): result = my_col.update_one(myquery, new_val) print(result.modified_count, "文档已修改") # 修改匹配到的多条数据 def updateData_many(my_col, myquery, new_val): result = my_col.update_many(myquery, new_val) print(result.modified_count, "文档已修改") # 按照某字段排序 默认True是正序,False是倒序 def sortData(my_col, my_key, sortB = True): if sortB: my_doc = my_col.find().sort(my_key) else: my_doc = my_col.find().sort(my_key, -1) for item in my_doc: print(item) # 查询一条数据 def searchData_one(my_col): result = my_col.find_one() print(result) # 查询集合中所有数据 def searchData_many(my_col, limit = 0): for item in my_col.find().limit(limit): print(item) # 根据指定条件查询 或者正则表达式查询(比如 my_query = { "name": { "$regex": "^S" } }) def searchData_miss(my_col, my_query): print("根据指定条件查询: ", my_query) my_doc = my_col.find(my_query) for item in my_doc: print(item) if __name__ == "__main__": client_ip = "服务器IP地址" client_port = 27017 db_name = 'mongodb_test' col_name = 'col_test' my_json = {"name": "ShaShiDi", "url": "https://shazhenyu.blog.csdn.net/"} # 可以指定_id 我们也可以自己指定 id,插入 my_jsons = [{"_id": 1,"name": "sha", "url": "https://www.shazhenyu.com"},{"_id": 2,"name": "sha2", "url": "https://shazhenyu.com"}] my_query = {"name": "ShaShiDi"} my_query_regex = {"name": {"$regex": "^S"}} # 以下实例用于读取 name 字段中第一个字母为 "S" 的数据 my_key = "_id" new_values = {"$set": {"name": "ShaShiDi_new"}} my_client = MongoClient(client_ip, client_port) testDB(my_client) my_db = creatDB(my_client,db_name) my_col = creatCol(my_db,col_name) # # 增加一条数据 # addData_one(my_col, my_json) # # 增加多条数据 # addData_many(my_col, my_jsons) # # 删除一个符合条件的集合 # delData_one(my_col, my_query) # # 删除所有符合条件的集合 # delData_many(my_col, my_query) # # 删除该集合中的所有文档 # delData_many(my_col, {}) # # 删除表单 # delCol(my_col) # # 修改第一个匹配到的文档 # updateData_one(my_col, my_query, new_values) # # 修改所有符合条件的文档 # updateData_many(my_col, my_query, new_values) # # 按照某字段排序 默认True是正序,False是倒序 # sortData(my_col, my_key) # # 根据指定条件查询 # searchData_miss(my_col, my_query) # # 根据正则表达式查询 # searchData_miss(my_col, my_query_regex) # # 查询集合中所有数据 如果写第二个参数,就是指定条数记录查询 # # searchData_many(my_col) # searchData_many(my_col,2)
1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为Python开发。3.人工智能应用,基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python。4、系统运维工程项目,自动化运维的标配就是python+Django/flask。5、金融理财分析,量化交易,金融分析。6、大数据分析。
关于“python数据库开发之MongoDB安装及Python3操作MongoDB数据库的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。