python -- mongodb 数据库增删改查

本文介绍了使用Python的pymongo库进行MongoDB数据库操作,包括连接数据库、获取表名、添加、查找、更新和删除数据,以及创建数据库和表。通过实例展示了如何在MongoTest数据库中执行CRUD操作。
摘要由CSDN通过智能技术生成
from pymongo import MongoClient
from typing import Union

class Test():
    def __init__(self, dbName: str, tableName:Union[str, None]=None):
        HOST = "localhost"
        PORT = 27017
        self.client = MongoClient(host=HOST, port=PORT)
        self.db = self.client[dbName]
        # self.tableName = tableName
        # if self.tableName:
        #     self.datas = self.db[self.tableName]

    def getDBs(self)->list:
        """获取数据库名称, 也就是 collections 的名称"""
        dbNames = self.client.list_database_names()
        return dbNames

    def getCollections(self)->list:
        """获取当前数据库下所有的表名"""
        tableNames = self.db.list_collection_names()
        return tableNames

    def addData(self, data: Union[dict, list]=None, tableName: str=None):
        table = self.db[tableName]

        if isinstance(data, dict):
            table.insert_one(data)

        if isinstance(data, list):
            table.insert_many(data)

    def findData(self, tableName: str=None):
        """
        查找数据
        :param tableName: 表名
        :return:
        """
        datas = self.db[tableName]

        # 查找 name 值为 李四的值.
        result = datas.find_one({"name": "张三"})
        print(result)

        for data in datas.find():
            print(data)

    def updateData(self):
        """改 数据 (更新数据)"""
        table = self.db["Test"]
        table.update_one({"name": "张三"}, {"$set": {"age": 30}})

    def deleteData(self):
        table = self.db["Test"]
        # result = table.delete_one({"name": "张三"})
        # print(result)
        # print(result.deleted_count)  # 输出删除的元素条数


        # 删除所有年龄为 18 的人
        # _list = {"age": 18}
        # table.delete_many(_list)

        # 删除 Test 表
        self.db.drop_collection("Test")


    def createData(self):
        """创建假数据用来测试"""
        """如果没有数据库, 就创建数据库"""
        if "MongoTest" not in self.getDBs():
            mongoTest = self.client["MongoTest"]  # 创建数据库

        """如果数据库中没有对应的测试表, 就创建测试表"""
        if "Test" not in self.getCollections():
            mongoTest.create_collection("Test")     # 建表

def main():
    test = Test(dbName="MongoTest")
    test.createData()
    datas = [
        {"name": "麻生希", "age": 18},
        {"name": "北岛玲", "age": 18},
        {"name": "椎名空", "age": 25},
        {"name": "张三", "age": 25},
    ]
    test.addData(tableName="Test", data={"name": "赵二", "age": 23})
    test.addData(tableName="Test", data=datas)
    # test.addData(tableName="Test",)
    test.findData(tableName="Test")
    test.updateData()

    print("---------------------------------------------")
    test.findData(tableName="Test")
    test.deleteData()


if __name__ == '__main__':
    main()

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值