• 06_python操作mongodb


    面向过程

    # 用Python操作 MongoDB数据库
    
    # python 连接MongoDB数据库要用到 pymongo 模块
    import pymongo
    
    # 1. 建立连接
    client = pymongo.MongoClient()  # 建立客户端连接
    
    # 2. 指定数据库
    db = client['python37']
    
    # 3. 指定集合
    my_col = db['student']
    
    # 文档操作 (数据的增删改查)
    # 增
    # my_col.insert_one({'name':'long', 'age': 18, 'sex': 'M'})   # 插入一条数据
    
    # my_col.insert_many([      # 增加多条数据
        # {'name': 'cheng', 'age': 19, 'sex': 'M'},
        # {'name': 'yan', 'age': 18, 'sex': 'F'},
        # {'name': 'love', 'age': 17, 'sex': 'F'},
        # {'name': 'yellow', 'age': 20},
    # ])
    
    # 查
    res = my_col.find_one()   # 只拿第一条
    print(res)
    
    res = my_col.find()  # 拿到所有的数据
    # print(res)  # 一个地址, 可以迭代的对象
    # for i in res:
        # print(i)
    
    
    # 改
    # my_col.update_one({'name': 'love'}, {'$set': {'name': 'greenyellow'}})    # 修改一条数据
    my_col.update_many({'name': 'yan'}, {'$set': {'name': 'yanyan'}})   # 修改满足条件的所有数据
    
    
    # 删
    # res = my_col.delete_one({'name': 'greenyellow'})    # 删除一个并返回
    res = my_col.delete_many({'name': 'cheng'})           # 删除满足条件的所有数据
    print(res)      #
    

    面向对象

    import pymongo
    """
    find_one()  find()
    insert_one() insert_many()
    update_one() update_many()
    delete_one() delete_many()
    """
    
    
    class MyMongoDBWrapper(object):
        """把pymongo操作mongodb数据库的 '增删除改查' 方法封装成一个类中的方法"""
        def __init__(self, host, port, db):
            """初始化"""
            # 1. 连接
            # self.client = pymongo.MongoClient(host='192.168.0.1', port='27017')
            self.client = pymongo.MongoClient(host=host, port=port)
            # 2. 指定数据库
            self.db = self.client[db]
    
        def insert(self, col='stu', data={}):  # data默认为字典
            """插入数据"""
    
            col = self.db[col]  # 指定要为哪个集合插入数据
    
            if type(data) == dict:      # 如果传入的数据是一个字典,则说明是插入一条数据
                col.insert_one(data)
            elif type(data) == list:    # 是一个列表, 则说明要插入多条数据
                col.insert_many(data)
            else:
                # return "不好意思,你插入数据的格式不对,请重试"
                print('不好意思,你插入数据的格式不对,请检查好后重试')
                exit()
    
        def find(self, if_data=None, col='stu',find_one=True):   # find_one=True 默认查找一条
            """查找"""
            col = self.db[col]
            if find_one:
                res = col.find_one(if_data)
                return res
            else:
                res = col.find(if_data)
                return res
    
        def update(self, col='stu', update_one=True, if_data={}, new_data={}):
            """修改, # 更新"""
            col = self.db[col]
            if update_one:
                col.update_one(if_data, {'$set': new_data})
            else:
                col.update_many(if_data, {'$set': new_data})
    
        def delete(self, col='stu', if_data={}, delete_one=True):
            """删除"""
            col = self.db[col]
            if delete_one:
                col.delete_one(if_data)
            else:
                col.delete_many(if_data)
    
    
    if __name__ == '__main__':
        mymongodb = MyMongoDBWrapper(host='192.168.0.7', port=27017, db='py3')
    
        # 1. 增
        doc = {'long': 'long', 'age': 18, 'sex': 'M'}
        mymongodb.insert(col='stu2', data=doc)      # 插入一条数据, 如果不指定col, 则默认使用 col='stu'
        docs = [
            doc,
            {'name': 'qiye', 'age': 45, 'sex': 'M'},
            {'name': 'cheng', 'age': 20, 'sex': 'F'}
        ]
        mymongodb.insert(data=docs)     # 不指定col, 所以会为默认的集合 stu 插入多条数据
    
        # 2. 查
        # mymongodb.find(if_data={'age': 18})     # 查找满足条件的第一条数据
        res = mymongodb.find()    # 查找第一条数据, stu集合
        print(res)
        res =  mymongodb.find(find_one=False)         # 查找所有数据, 没有指定, 也是stu用的stu集合
        for i in res:
            print(i)
    
        # 3. 改
        mymongodb.update(col='stu2', if_data={'name': 'long'}, new_data={'name': 'long2'})   # 修改一条
        mymongodb.update(col='stu2', update_one=False, if_data={'name': 'long'}, new_data={'name': 'long3', 'age': 23, 'prrtty': 'Yes'})       # 修改所有满足条件的数据
    
        # 4. 删
        mymongodb.delete(col='stu2', if_data={'name': 'long2'})     # 删除一条
        mymongodb.delete(col='stu2', if_data={'name': 'long3'}, delete_one=False)   # 删除所有满足条件的
    
    
  • 相关阅读:
    Entity Framework在Asp.net MVC中的实现One Context Per Request(转)
    Entity Framework中的Identity map和Unit of Work模式(转)
    hudi
    拉链表和流水表
    onedata
    window.top 踩坑前车之鉴
    识别RESTful API资源
    就是不想用if
    如何在面试中评估一个BA的能力
    Python逻辑运算结果的类型
  • 原文地址:https://www.cnblogs.com/nichengshishaonian/p/11540116.html
Copyright © 2020-2023  润新知