美文网首页我爱编程
数据库笔记(6)- Python 操作MongoDB

数据库笔记(6)- Python 操作MongoDB

作者: 逍遥_yjz | 来源:发表于2018-06-17 21:14 被阅读0次

    1 安装

    2.连接数据库

    先把mongodb的服务启动,
    打开这个目录下运行cmd,然后复制E:\MongoDB\data,在命令里面运行:

    mongod –dbpath E:\MongoDB\data 
    

    然后怎么连接MongoDB数据库那?
    三种方式:


    from pymongo import MongoClient
    
    def test1():
        # m每次运行Client都会生成一条conn
        client = MongoClient()
        # client2 = MongoClient('localhost', 27017)
        # client3 = MongoClient('mongodb://localhost:27017')
        # 生成端口号和 id
        print(client.PORT)  #27017
        print(client.HOST) # localhost
    
        # 查看本地有多少数据库
        print(client.database_names())   # ['admin', 'config', 'local']
    
        client.close()
        # 关闭后还是可以访问,因为它内置到pymongo里面的连接池。所以也不必要关闭
        print(client.database_names())
    

    3.新增数据

    数据库可以接受python的类型,写入。

    class TestMongo(object):
    
        def __init__(self):
            self.client = MongoClient()
            self.db = self.client['blog']
    
        def add_one(self):
            '''新增一条数据'''
            import time
            post = {
                'title':'标题',
                'content' :'内容',
                'created_at':time.time()
            }
            rest = self.db.blog.posts.insert_one(post)
            return rest
    
    
    def main():
        obj = TestMongo()
        rest = obj.add_one()
        print(rest.inserted_id)
    
    if __name__ == '__main__':
        main()
    

    可以看更多,添加多条数据
    https://api.mongodb.com/python/current/api/


    https://api.mongodb.com/python/current/api/pymongo/collection.html

    4.修改数据

    5. 删除数据

    删除成功就是大于零,失败就是0.
    所有的代码:

    # coding:utf-8
    
    from pymongo import MongoClient
    
    def test1():
        # m每次运行Client都会生成一条conn
        client = MongoClient()
        # client2 = MongoClient('localhost', 27017)
        # client3 = MongoClient('mongodb://localhost:27017')
        # 生成端口号和 id
        print(client.PORT)  #27017
        print(client.HOST) # localhost
    
        # 查看本地有多少数据库
        print(client.database_names())   # ['admin', 'config', 'local']
    
        client.close()
        # 关闭后还是可以访问,因为它内置到pymongo里面的连接池。所以也不必要关闭
        print(client.database_names())
    
    #test1()
    
    class TestMongo(object):
    
        def __init__(self):
            self.client = MongoClient()
            self.db = self.client['blog']
    
        def add_one(self):
            '''新增一条数据'''
            import time
            post = {
                'title':'标题',
                'content' :'内容3',
                'created_at':time.time(),
                'x': 4
            }
            rest = self.db.blog.posts.insert_one(post)
            return rest
    
        def get_one(self):
            '''查询一条数据'''
            return self.db.blog.posts.find_one()
    
        def get_more(self):
            '''查询多条数据'''
            return self.db.blog.posts.find()
    
        def get_from_oid(self,oid):
            '''根据记录的ID 获得数据'''
            #
            from bson.objectid import  ObjectId
            return self.db.blog.posts.find_one({'_id':ObjectId(oid)})
    
        def update(self):
            '''修改数据'''
            # 修改一条数据,我们找到符合标题为first的的数据,有多条的话就修改一条,增加3;
            # 如果没有失败
            rest = self.db.blog.posts.update_one({'title':"标题7"}, {'$inc':{'x' : 3}})
            print(rest.matched_count)
            print(rest.modified_count)
            # 修改多条数据
            rest = self.db.blog.posts.update_many({}, {'$inc': {'x': 1}})
            print(rest.matched_count)
            print(rest.modified_count)
    
        def delete(self):
            '''删除数据'''
            # 删除一条数据
            #return self.db.blog.posts.delete_one({'x':4})
            # 删除多条数据
            return self.db.blog.posts.delete_many({'x':4})
    
    def main():
        obj = TestMongo()
        # rest = obj.add_one()
        # print(rest.inserted_id)
    
        # rest = obj.get_one()
        # print(rest) # {'content': '内容', 'title': '标题', 'created_at': 1529225922.4452477, '_id': ObjectId('5b2622c2bb0765132407a14d')}
        # # 它是一个字典的形式
        # print(rest['_id']) # 5b2622c2bb0765132407a14d
    
        # rest = obj.get_from_oid('5b26251bbb07651f740597c5')
        # print(rest) # {'content': '内容3', 'title': '标题', 'created_at': 1529226523.9236503, '_id': ObjectId('5b26251bbb07651f740597c5')}
    
        #rest = obj.update()
    
    
        rest = obj.delete()
        print(rest.deleted_count)
    
    
    if __name__ == '__main__':
        main()
    
    
    
    

    数据库笔记(1)-简述
    数据库笔记(2)- Mysql 基础
    数据库笔记(3)-ORM
    数据库笔记(4)-网易新闻的实战
    数据库笔记(5)- MongoDB基础
    数据库笔记(6)- Python 操作MongoDB
    数据库笔记(7)- MongoDB ORM
    数据库笔记(8)- 网易新闻实战
    数据库笔记(9)- Redis 数据库基础
    数据库笔记(10)- Python 操作Redis

    相关文章

      网友评论

        本文标题:数据库笔记(6)- Python 操作MongoDB

        本文链接:https://www.haomeiwen.com/subject/jhfgeftx.html