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()
相關文章
相關標籤/搜索