zoukankan      html  css  js  c++  java
  • pymongo的使用

    # -*- coding:utf-8 -*-
    """
    注意,需要安装 pymongo 这个库
    pip3 install pymongo
    
    
    在你安装并开启 mongo 之后,就可以使用 pymongo 来连接使用 mongodb 了
    """
    
    import pymongo
    import random
    
    # 先要打开本地的的数据库
    # 连接 mongo 数据库, 主机是本机, 端口是默认的端口
    client = pymongo.MongoClient("mongodb://localhost:27017")
    print('连接数据库成功', client)
    
    # 设置要使用的数据库
    mongodb_name = 'my_data'
    # 直接这样就使用数据库了,相当于一个字典
    # 也可以这样用 db = client.my_data
    db = client[mongodb_name]
    
    
    # 插入数据
    # ===
    # mongo 中的 document 相当于 sqlite 中的 table
    # 不需要定义,直接使用
    # 不限定每条数据的字段
    # 直接插入新数据,数据以字典的形式提供
    # 下面的例子中, user 是文档名(表名),不存在的文档会自动创建
    # 每个数据有一个自动创建的字段 _id,可以认为是 mongo 自动创建的主键
    
    def insert():
        u = {
            '_delete': False,
            'name': 'gua',
            'note': '',
            # 放一个随机值来方便区分不同的数据以便下面的代码使用条件查询
            '随机值': random.randint(0, 3),
        }
        db.user.insert(u)
        # 相当于 db['user'].insert
    
    insert()
    
    
    # 查找数据
    # ===
    # find 返回一个可迭代对象,使用 list 函数转为数组
    def find():
        user_list = list(db.user.find())
        print('所有用户', user_list)
    
    
    # find 可以传入参数来做条件查询
    # 具体可以很复杂 我们这里只演示简单的
    #
    # 查询随机值为 1 的所有数据
    def find1():
        query = {
            '随机值': 1,
            'name': 'gua'
        }
        us = list(db.user.find(query))
        print('random 1 ', len(us))
        # for u in us:
        #     print(u['name'])
        #
        # 查询 随机值 大于 1 的所有数据
        query = {
            '随机值': {
                '$gt': 1
            },
        }
        print('random > 1', list(db.user.find(query)))
        #
        # $or 查询
        query = {
            '$or': [
                {
                    '随机值': 2,
                },
                {
                    'name': 'GUA'
                }
            ]
        }
        us = list(db.user.find(query))
        print('or 查询', us)
    
    
    # find1()
    
    #
    # 此外还有 $lt $let $get $ne $or 等条件
    #
    #
    # 部分查询, 相当于 select xx, yy from 表名 语句
    #
    def find_cond():
        query = {}
        field = {
            # 字段: 1 表示提取这个字段
            # 不传的 默认是 0 表示不提取
            # _id 默认是 1
            'name': 1,
            '_id': 0,
        }
        print('部分查询,只查询', list(db.user.find(query, field)))
    
    # find_cond()
    
    # 更新数据
    # ===
    # 默认更新第一条查询到的数据
    def update():
        query = {
            '随机值': 1,
        }
        form = {
            '$set': {
                'name': '更新 22222',
            }
        }
        options = {
            'multi': True,
        }
        # 注意, 上课这部分代码出问题了, 现在是修复过的
        # 相当于 db.user.update(query, form, multi=True)
        db.user.update(query, form, **options)
    
    
    update()
    
    # 如果想要更新所有查询到的数据
    # 需要加入下面的参数 {'multi': True}
    # db.user.update(query, form, {'multi': True})
    
    
    # 删除
    # ===
    # 删除和 find 是一样的
    # db.user.remove()
    
    # all 是给用户使用的查询函数
    def all():
        query = {
            '_deleted': False,
        }
        user_list = list(db.user.find(query))
        us = []
        for u in user_list:
            u.pop('_deleted')
            us.append(u)
        print('所有用户', len(us), us)
    
    # all()
  • 相关阅读:
    第3章 MFC框架程序剖析
    第2章 掌握C++
    第1章 Windows程序内部运行机制
    【MFC】画线
    使用RegSetValueEx修改注册表时遇到的问题(转)
    读书笔记
    POJ 1182[并查集]
    读书笔记
    HihoCoder 1532 : 最美和弦
    HihoCode 1531 : 德国心脏病
  • 原文地址:https://www.cnblogs.com/cuzz/p/8166992.html
Copyright © 2011-2022 走看看