Python操作redis和mongoDB的方法
作者:艾里_Simple 发布时间:2023-01-01 17:06:34
一、操作redis
redis是一个key-value存储系统,value的类型包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希类型)。为了保证效率,数据都是缓冲在内存中,在处理大规模数据读写的场景下运用比较多。
备注:默认redis有16个数据库,即db0~db15, 一般存取数据如果不指定库的话,默认都是存在db0中。
resid提供2种连接方式:直接连接、连接池连接
1、直接连接示例:
import redis # pip3 install redis
# 创建redis连接对象
def init_redis():
redis_config = {
"host": "172.29.0.17",
"port": 6379
}
global Redis_Conn
Redis_Conn = redis.Redis(**redis_config)
# Redis_Conn = redis.Redis(host='172.29.0.17', port=6379, db=1) # 指定数据库
# 插入值,Value为str类型为例
def insert_redis_key_value(key,value):
Redis_Conn.set("name","Zhu")
# 获取值,Value为str类型为例
def get_redis_key_value(key):
global Redis_Conn
print("redis key value: %s" % Redis_Conn.get(key))
连接池的原理是, 通过预先创建多个连接, 当进行redis操作时, 直接获取已经创建的连接进行操作, 而且操作完成后, 不会释放, 用于后续的其他redis操作,这样就达到了避免频繁的redis连接创建和释放的目的, 从而提高性能。
redis模块采用ConnectionPool来管理对redis server的所有连接。
2、连接池连接示例:
import redis
pool = redis.ConnectionPool(host='172.29.0.17', port=6379,db=1)
red = redis.Redis(connection_pool=pool)
red.set('key1', 'value1')
red.set('key2', 'value2')
二、操作mongoDB
1、mongoDB 是一个非关系型数据库(NoSQL),介于关系数据库和非关系数据库之间的产品。拥有很多优秀特性,例如高性能、高可用、支持丰富的查询语句、无需预定义数据模型和水平可伸缩等。
2、mongoDB是非关系数据库当 * 能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
3、mongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
4、mongoDB 的适用场景为:数据不是特别重要(例如通知,推送)、数据表结构变化较为频繁、数据量特别大、数据的并发性特别高、数据结构比较特别(例如地图的位置坐标),
这些情况下用 mongoDB , 其他情况就还是用MySQL ,这样组合使用就可以达到最大的效率。
import pymongo # pip3 install pymongo
# 创建mongo连接对象
def init_mongo():
global Mongo_Conn
Mongo_Conn = pymongo.MongoClient(host="172.29.0.14", port=27017)
admin = Mongo_Conn.admin
admin.authenticate('root', '')
# 数据操作
def get_mongo_key_value(token_id):
db = Mongo_Conn['device_center'] # 创建数据库"device_center",命名为"db"
col = db['token_info'] # 创建集合"token_info",命名为"col"
mydict = {"name": "Zhuyu", "alexa": "160", "sex": "male"}
col.insert_one(mydict) # 插入一条数据
mylist = [
{"name": "ating", "alexa": "168", "sex": "male"},
{"name": "Liang", "alexa": "165", "sex": "female"},
{"name": "Libai", "alexa": "156", "sex": "female"}
]
col.insert_one(mylist) # 插入一组数据
query1 = col.find_one() # 查询一条数据
query2 = col.find({},{"alexa": 1}) # 查询指定字段的数据
query3 = col.find() # 查询集合中的所有数据
query4 = col.find({"name": "ating"}) # 根据指定条件查询
myquery1 = { "alexa": "160" }
newvalues1 = { "$set": { "alexa": "161" } }
col.update_one(myquery1, newvalues1) # 修改匹配到的第一条记录
myquery2 = { "name": { "$regex": "^L" } }
newvalues2 = { "$set": { "alexa": "123" } }
col.update_many(myquery2, newvalues2) # 修改所有匹配到的记录,将查找所有以 L 开头的 name 字段,并将匹配到所有记录的 alexa 字段修改为 123
query5 = col.find().sort("alexa") # sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序
for x in query5 :
print(x)
# 结果
{"name": "Libai", "alexa": "156", "sex": "female"}
{"name": "Zhuyu", "alexa": "160", "sex": "male"}
{"name": "Liang", "alexa": "165", "sex": "female"}
{"name": "ating", "alexa": "168", "sex": "male"}
query6 = col.find().sort("alexa",-1) # 降序
for x in query6:
print(x)
# 结果
{"name": "ating", "alexa": "168", "sex": "male"}
{"name": "Liang", "alexa": "165", "sex": "female"}
{"name": "Zhuyu", "alexa": "160", "sex": "male"}
{"name": "Libai", "alexa": "156", "sex": "female"}
myquery3 = { "name": "Libai" } # 删除一条数据
mycol.delete_one(myquery3)
myquery4 = { "name": {"$regex": "^L"} } # 删除多个数据
x1 = mycol.delete_many(myquery4)
print(x1.deleted_count, "个文档已删除") # 2个文档已删除
x2 = mycol.delete_many({}) # 删除集合中的所有数据
print(x2.deleted_count, "个文档已删除") # 4个文档已删除
# 断开mongo连接
def disconnect_mongo():
Mongo_Conn.disconnect()
总结
以上所述是小编给大家介绍的Python操作redis和mongoDB的方法网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://www.cnblogs.com/ailiailan/archive/2019/12/18/12059962.html


猜你喜欢
- PHP get_html_translation_table() 函数实例输出 htmlspecialchars 函数使用的翻译表:<
- Python的五个标准数据类型数字字符串列表元组字典一、数字不可变数据类型,存储值为数值1.创建对象,分配数值例:>>>
- 先看看这三段话:[1、企业文化对形成企业内部凝聚力和外部竞争力所起到的积极作用,越来越受到人们的重视。企业竞争,实质是企业文化的竞争。面临全
- 在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日志log功能,通过查
- transforms.Resize()的简单使用简单来说就是调整PILImage对象的尺寸,注意不能是用io.imread或者cv2.imr
- 现在很多CMS系统因为安全原因会把后台编辑器里的上传功能给去除,但这样一来对实际使用过程造成了很多麻烦,今天我们以ASPCMS系统的FCKe
- 如何用ASP来识别操作系统是vista的?我在网上找了个函数,但是不能判断是vista系统,希望大家帮忙. 这个是我在网上找的函数: Fun
- MySQL安装说明MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品。MySQL 是最流行
- 添加用户(随着用户的创建,自动产生与用户同名的schema) CREATE USER "TESTER" PROFILE
- 本文实例讲述了python统计一个文本中重复行数的方法。分享给大家供大家参考。具体实现方法如下:比如有下面一个文件2312我们期望得到2,2
- 一、字符串方法1.字符串的分割s.split() 默认是按照空格分割s.split(',') 按照逗号分割(返回的是一个列表
- 一:操作redis1:redis拓展安装composer require predis/predis或者你也可以通过 PECL 安装&nbs
- 在python中对一个元组排序我的同事Axel Hecht 给我展示了一些我所不知道的关于python排序的东西。 在python里你可以对
- 因为要做移动梦网WAP的一些接口,所以要用到这种方式,接下来会有ASP.net版本的,这个是ASP版本的,利用了MSXML2.XMLHTTP
- 被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符 这个字段所属的表与这个字段关联的表,一定是一对多的关系 比如
- logging模块logging模块用于输出运行日志,可以设置不同的日志等级,保存信息到日志文件中等。 相比print,logging可以设
- 背景使用python进行图像可视化,很多情况下都需要subplots将多幅图像绘制在一个figure中。因为使用频率足够高,那么程序员就需要
- apiDoc的安装npm install apidoc -g点击官方文档生成api的终端命令:apidoc -i 代码所在路径-o 生成文件
- 近期,有小伙伴问我关于怎么使用python进行散点图的绘制,这个东西很简单,但是怎么讲相关性的值标注在图形上略显麻烦,因此,在这里记录一下,
- 直接进入主题立方体每列颜色不同:# Import librariesimport matplotlib.pyplot as pltfrom