关于python_MongoDB的一些操作

关于python_MongoDB的一些操作

前提:安装pymongo

1、在cmd中输入:
> pip install pymongo 

2、直接在pycharm安装:
pychram-file-settings-project-Interpreter,选择项目,点击绿色的加号,搜索pycharm,然后点击install Package。完成后会提示

1、用pycharm连接到MongoDB:

#导入模块
from pymongo import MongoClient

1、连接MongoDB数据库
conn = MongoClient("localhost")

2、关联某个数据库    连接名.数据库名
#(1)、关联的数据库存在,则直接关联该数据库
#(2)、关联的数据库不存在,则创建库
db = conn["school"]

3、关联数据表(集合)
#(1)、关联的数据表存在,则直接关联该数据表
#(2)、关联的数据表不存在,则创建表
grade_1_3 = db["grade_1_3"]

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

2、为方便连接MongoDB,给它建一个类,下次用直接调就行:

from pymongo import MongoClient

class Conn:
    def __init__(self,host,db,tables):
        # 获取链接地址
        self.con = MongoClient(host)
        # 关联数据库
        self.db = self.con[db]          #con[db] 等价于 con.myschool
        # 关联数据表
        self.tables = self.db[tables]

    def getData(self):
        return self.tables


if __name__ == "__main__":
    # host = "localhost"
    # db = "myschool"
    # tables = "score"
    # 创建一个conn实例
    test = Conn("localhost","myschool","score").getData()
    # 查询数据
    result = test.find({}, {"_id": 0})
    for i in result:
        print(i)

3、对MongoDB的操作

1、导入上面建的连接类
from day20.conn import Conn

#传入连接地址、数据库和表名
grade_1_3 = Conn("localhost","school","grade_1_3").getData()

#查询表的筛选内容,result就是查到的结果
result = test.find({}, {"_id": 0})      #{"_id": 0}代表,_id这项内容不输出
#把内容循环输出
for i in result :
    print(i)

2、查询数据    
#查询名称为张三或者李四,并且年龄大于8岁的数据
result = grade_1_3.find({"name":{"$in":["张三","李四"]},
                         "age":{"$gt":8}},{"_id":0})
#查询名称为张三或者是李四,或者年龄大于30岁的数据
result = grade_1_3.find(
    {
        "$or":
            [
               {"name":{"$in":["张三","李四"]}},
               {"age":{"$gt":30}}
            ]
    },{"_id":0})
3、更新数据
#更新一条数据
result = grade_1_3.update_one({"name":"王五"},{"$set":{"age":22}})
#查询所有数据有没有age,如果有统一加2,没有就创建age,并赋值给2
result = grade_1_3.update_many({},{"$inc":{"age":2}})
# $currentDate 代表时间戳模式
result =  grade_1_3.update_many(
    {"name":
         {"$in":["张三","李四"]}},
    {"$currentDate":
         {"create_time":True,           # 相当于是:{‘$type‘:’date’},产生日期时间字段
          "mod_time":{"$type":"timestamp"}  # 产生时间戳格式的字段
          }})

4、查询时间戳并格式化输出
#查询出时间戳并转化为正常日期格式
import time
result = grade_1_3.find({"name":"张三"},{"_id":0})
doc = []
for i in result :
    doc.append(i)

mod_time = doc[0]["mod_time"]
# print(dir(mod_time))
print("as_datetime-->",mod_time.time)

timestamp = mod_time.time
#将时间戳转化为时间日期格式
timeArray = time.localtime(timestamp)

#将timeArray进行格式化
date =  time.strftime("%Y-%m-%d %H:%M:%S",timeArray)
print(date)

5、删除数据
删除一条数据
grade_1_3.delete_one({"age":19})
删除多条数据
grade_1_3.delete_many({"age":19})

#  查询所有记录,将查询到的结果增加一字段: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},
                              sort=[("age",pymongo.DESCENDING)],
                              return_document=pymongo.ReturnDocument.BEFORE
                              )
print(result)

6、读取文本数据,然后写到数据库中
from conn import Conn
import json

#表一,grade_json1
grade_json1 = Conn("localhost","school","grade_json").getData()
#表二grade_json
grade_json = Conn("localhost","school","grade_json1").getData()

#读取数据
file1 = open("data/zips.json")

# 方法一
result = []
#循环读取数据
for i in file1:
   x = json.loads(i)
   result.append(x)
#增加数据到数据库
grade_json.insert_many(result)

#方法二
for i in file1:
   x = json.loads(i)
   grade_json1.insert_one(x)

猜你喜欢

转载自blog.csdn.net/sinat_30353259/article/details/80408900