Python+MongoDB

Python+MongoDB

标签(空格分隔): 未分类


1. 链接数据库

import pymongo
from pymongo import MongoClient
#1.连结本地MongoDB服务器
connect = MongoClient("localhost")
'''
2.关联某个数据库    链接名.数据库名
(1)关联的数据库存在,则直接关联该数据库
(2)关联的数据库不存在,则创建该数据库
'''
db = connect.school
#3.关联数据表(集合),关联数据表的逻辑和关联数据库的逻辑相同的
grade_1_3 = db.grade_1_3

#4.开始表的相关操作
result= grade_1_3.find({},{"_id":0})
# print(result)
for document in result:
    print(document)

2. 封装链接数据库函数

# import pymongo
from pymongo import MongoClient
class Connect:
    def __init__(self,dbName,collection):
        self.con = MongoClient("localhost")   #获取链接
        self.db = self.con[dbName]  #关联数据库
        self.collection = self.db[collection]   #关联数据表
    def get(self):
        return self.collection
#如果直接运行本py文件,则会run如下代码,如果是其他py文件调用本文件,则此文件不会运行
if __name__ == "__main__":
    #创建一个Connect的实例
    con = Connect("school","grade_1_3")
    #从con实例中获取表实体
    students = con.get()
    #查询score表中所有的数据,去掉_id字段
    result = students.find({},{"_id":0})

    for doc in result:
        print(doc)

3. 添加一行数据insert_one()

import pymongo
from pymongo import MongoClient
#1.连结本地MongoDB服务器
connect = MongoClient("localhost")
'''
2.关联某个数据库    链接名.数据库名
(1)关联的数据库存在,则直接关联该数据库
(2)关联的数据库不存在,则创建该数据库
'''
db = connect.school
#3.关联数据表(集合),关联数据表的逻辑和关联数据库的逻辑相同的
grade_1_3 = db.grade_1_3
#4.向grade_1_3集合添加一条数据
info = {
        "name":"zhangsan",
        "age":26,"sex":"boy",
        "contact":{
        "email":"abcd@gmail.com",
        "phone":18788888888}
        }
grade_1_3.insert_one(info)
result= grade_1_3.find({},{"_id":0})

for document in result:
    print(document)
print("执行完成")

4. 添加多行数据insert_many()

......
db = connect.school
#3.关联数据表(集合),关联数据表的逻辑和关联数据库的逻辑相同的
grade_1_3 = db.grade_1_3
person1 = {
    "name":"妲己",
    "sex":"女",
    "age":1000,
    "hobby":["唱歌","跳舞"]
}
person2 = {
    "name": "安其拉",
    "sex": "女",
    "age": 18,
    "hobby": ["玩火", "看书","蹲草丛"]
}
#4.向grade_1_3集合添加多条数据
grade_1_3.insert_many([person1,person2])
#grade_1_3.insert([person1,person2])  方法2

result= grade_1_3.find({},{"_id":0})
......

5. 更新数据update_one()和update_many()

from Connect01 import Connect
#Connect里传数据库名和数据表名
grade_1_3 = Connect("school","grade_1_3").get()
#查找name为李四的所有数据,只更新第一个李四的sex为girl.
students = grade_1_3.update_one({"name":"李四"},{"$set":{"sex":"girl"}})
#$inc , 如果记录中没有这个字段,会增加此字段,如果有,就把所有age值加2
 students = grade_1_3.update_many({},#条件,这里为空,相当于无条件,即更新所有
                                  {"$inc":{"age":2}})#把所有键值为age的值都相应加2

#$min 的意思是和当前值比较,取最小值来进行更新
students1 = grade_1_3.update_many({"name":{"$in":["张三","李四"]}},                                  {"$min":{"age":6}})#如果张三和李四的age都比6小就不用更新,如果都比6大就都更新为6.
print("执行完成")

6. 查找数据find()和find_one_and_update()

from Connect01 import Connect
#Connect里传数据库名和数据表名
grade_1_3 = Connect("school","grade_1_3").get()
1)students = grade_1_3.find({"name":{"$in":["张三","王五"]}},{"_id":0})
2)result = grade_1_3.find(
    {"name":{"$in":["张三","王五"]},
    "age":{"$lt":17}},
    {"_id":0})
3)result = grade_1_3.find({"$or":[{"name":{"$in":["张三","王五"]}},{"age":{"$lt":15}}]},{"_id":0})
4)#查找手机号是1832145672的员工
result = employee.find({"concat.phone":"1832145672"},{"_id":0})
5)#  查询所有记录,将查询到的结果增加一字段:locked:1,同时将age字段里的值增加2,返回的结果中只包含age,name,同时对返回结果按age降序排列,最后返回该记录修改之前的状态
result = grade_1_3.find_one_and_update({},
                              {
                                  "$set":{"locked":1},       #添加这个字段
                                  "$inc":{"age":2}
                              },
                              projection={"age":True,"name":True}, #只返回age和name字段
                              sort=[('age',pymongo.DESCENDING)],  #将结果按照降序排列
                              return_document=pymongo.ReturnDocument.BEFORE #返回修改之前的数据
                            )
for doc in students:
    print(doc)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值