快速上手MongoDB和Python交互

一、安装&导入

pip install pymongo
from pymongo import MongoClient
MongoDB 默认没有用户名密码

二、连接数据库

  1. 方式一
client = MongoClient(host='localhost', port=27017)  # MongoClient类
# MongoClient类	的重要参数
# host=None,  数据库地址localhost  (本机的:127.0.0.1)
# port=None,  端口号 27017
# connect=None,
# 
  1. 方式二 指定端口和地址
client = MongoClient('localhost',27017)
# 直接选择数据库和表
db = client['students']['demo']
# 插入多条数据
result = db.insert_many('数据,一个列表嵌套字典')
  1. 方式三 使用URI (不是URL)
client = MongoClient('mongodb://localhost:27017/')

三、新增数据

db = client[‘test’]
db.students.insert_one(‘数据’)
db 是数据库, 选择连接 Mongo 的哪个数据库(test)
student 是其中的一张表
insert_one 相当于指令添加一条数据
更多参数可以参考mongo源码的 mongo_client.py

result = db.student.insert_many(‘数据,一个列表里面嵌套字典’)

四、查询数据

查询数据或获取一条数据

mongo = client['students']['demo']
# 查询一条数据
res = mongo.get_one()
# 查询多条数据
res = mongo.get_many()
for i in res:
	print(i)
# 查询指定数据
data = {"title": "python"}
mongo.find(data)

根据id查询

from bson.objectid import ObjectId
# 根据id查询   需要导入库 from bson.objectid import ObjectId
res = mongo.find({"_id": ObjectId(query)})  # 得到一个对象 用for遍历出来

五、修改数据

update_one
update_many
{multi:true} update

修改单条数据

mongo = .client['students']['demo']
def update():
    res = self.mongo.update_one({'title':'标题'},{'$set':{'title':'title-2'}})
    # 匹配的数据条数
    print(res.matched_count)
    # 影响的数据条数。
    print(res.modified_count)


res = update()

修改多条数据

mongo = .client['students']['demo']
def update_more():
    res = self.mongo.update_many({},{'$set':{'x':1}})
    print(res.matched_count)
    print(res.modified_count)
    res = self.mongo.update({'x':2},{'$set':{'x':3}},True)


res = update_more()

六、删除数据

删除一条

def delete_one(self):
    res = self.db.students.delete_one({'title':'title-2'})
    print(res.deleted_count)

res = mongo.delete_one()

删除多条


def delete_more(self):
    res = self.db.students.delete_many({'x':2})
    print(res.deleted_count)


res = mongo.delete_more()

七、完整代码

# @ Time    : 2020/3/28 10:20
# @ Author  : Emily  
from pymongo import MongoClient
from bson.objectid import ObjectId


"""
增加数据 查询数据 其他空闲再增添
"""
class MongoDB(object):
    def __init__(self):
        # 连接MongoDB
        self.client = MongoClient(host='127.0.0.1', port=27017)
        # 连接 test 数据库 以及 demo 集合  可以先只指定数据库
        self.db = self.client['test']['demo']

    def add_one(self, data):  # 一条
        result = self.db.insert_one(data)  # insert_one
        print(result)

    def add_many(self, data):  # 多条
        result = self.db.insert_many(data)  # insert_many
        print(result)

    def get_one(self):
        return self.db.find_one()

    def get_many(self):
        return self.db.find()

    def get_data(self, query):
        # return self.db.find(query)  # ( 方法一)
        return self.db.find({"_id": ObjectId(query)})   # id  ObjectId


if __name__ == '__main__':
    mongo = MongoDB()  # 实例化 mongo
    data_one = {"title": "Java", "content": "教育"}  # 单条数据
    # mongo.add_one(data_one)  # MongoDB自启动??

    data_mo = [
        {"title": "C++", "content": "C++"},
        {"title": "PHP", "content": "PHP"}
    ]
    # mongo.add_many(data_mo)

    res = mongo.get_one()
    # print(res)

    result = mongo.get_many()
    # for data in result:
    #     print(data)

    # key_find_da = {"title": "C++"}
    # res_ke = mongo.get_data(key_find_da)  # 得到一个对象( 方法一)
    # for i in res_ke:
    #     print(i)

    result_id = mongo.get_data("5e7ec5d5407a21984f7e3fd2")
    for data in result_id:
        print(data)
    print(result_id)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章