一、安装&导入
pip install pymongo
from pymongo import MongoClient
MongoDB 默认没有用户名密码
二、连接数据库
- 方式一
client = MongoClient(host='localhost', port=27017) # MongoClient类
# MongoClient类 的重要参数
# host=None, 数据库地址localhost (本机的:127.0.0.1)
# port=None, 端口号 27017
# connect=None,
#
- 方式二 指定端口和地址
client = MongoClient('localhost',27017)
# 直接选择数据库和表
db = client['students']['demo']
# 插入多条数据
result = db.insert_many('数据,一个列表嵌套字典')
- 方式三 使用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)