面向过程
# 用Python操作 MongoDB数据库
# python 连接MongoDB数据库要用到 pymongo 模块
import pymongo
# 1. 建立连接
client = pymongo.MongoClient() # 建立客户端连接
# 2. 指定数据库
db = client['python37']
# 3. 指定集合
my_col = db['student']
# 文档操作 (数据的增删改查)
# 增
# my_col.insert_one({'name':'long', 'age': 18, 'sex': 'M'}) # 插入一条数据
# my_col.insert_many([ # 增加多条数据
# {'name': 'cheng', 'age': 19, 'sex': 'M'},
# {'name': 'yan', 'age': 18, 'sex': 'F'},
# {'name': 'love', 'age': 17, 'sex': 'F'},
# {'name': 'yellow', 'age': 20},
# ])
# 查
res = my_col.find_one() # 只拿第一条
print(res)
res = my_col.find() # 拿到所有的数据
# print(res) # 一个地址, 可以迭代的对象
# for i in res:
# print(i)
# 改
# my_col.update_one({'name': 'love'}, {'$set': {'name': 'greenyellow'}}) # 修改一条数据
my_col.update_many({'name': 'yan'}, {'$set': {'name': 'yanyan'}}) # 修改满足条件的所有数据
# 删
# res = my_col.delete_one({'name': 'greenyellow'}) # 删除一个并返回
res = my_col.delete_many({'name': 'cheng'}) # 删除满足条件的所有数据
print(res) #
面向对象
import pymongo
"""
find_one() find()
insert_one() insert_many()
update_one() update_many()
delete_one() delete_many()
"""
class MyMongoDBWrapper(object):
"""把pymongo操作mongodb数据库的 '增删除改查' 方法封装成一个类中的方法"""
def __init__(self, host, port, db):
"""初始化"""
# 1. 连接
# self.client = pymongo.MongoClient(host='192.168.0.1', port='27017')
self.client = pymongo.MongoClient(host=host, port=port)
# 2. 指定数据库
self.db = self.client[db]
def insert(self, col='stu', data={}): # data默认为字典
"""插入数据"""
col = self.db[col] # 指定要为哪个集合插入数据
if type(data) == dict: # 如果传入的数据是一个字典,则说明是插入一条数据
col.insert_one(data)
elif type(data) == list: # 是一个列表, 则说明要插入多条数据
col.insert_many(data)
else:
# return "不好意思,你插入数据的格式不对,请重试"
print('不好意思,你插入数据的格式不对,请检查好后重试')
exit()
def find(self, if_data=None, col='stu',find_one=True): # find_one=True 默认查找一条
"""查找"""
col = self.db[col]
if find_one:
res = col.find_one(if_data)
return res
else:
res = col.find(if_data)
return res
def update(self, col='stu', update_one=True, if_data={}, new_data={}):
"""修改, # 更新"""
col = self.db[col]
if update_one:
col.update_one(if_data, {'$set': new_data})
else:
col.update_many(if_data, {'$set': new_data})
def delete(self, col='stu', if_data={}, delete_one=True):
"""删除"""
col = self.db[col]
if delete_one:
col.delete_one(if_data)
else:
col.delete_many(if_data)
if __name__ == '__main__':
mymongodb = MyMongoDBWrapper(host='192.168.0.7', port=27017, db='py3')
# 1. 增
doc = {'long': 'long', 'age': 18, 'sex': 'M'}
mymongodb.insert(col='stu2', data=doc) # 插入一条数据, 如果不指定col, 则默认使用 col='stu'
docs = [
doc,
{'name': 'qiye', 'age': 45, 'sex': 'M'},
{'name': 'cheng', 'age': 20, 'sex': 'F'}
]
mymongodb.insert(data=docs) # 不指定col, 所以会为默认的集合 stu 插入多条数据
# 2. 查
# mymongodb.find(if_data={'age': 18}) # 查找满足条件的第一条数据
res = mymongodb.find() # 查找第一条数据, stu集合
print(res)
res = mymongodb.find(find_one=False) # 查找所有数据, 没有指定, 也是stu用的stu集合
for i in res:
print(i)
# 3. 改
mymongodb.update(col='stu2', if_data={'name': 'long'}, new_data={'name': 'long2'}) # 修改一条
mymongodb.update(col='stu2', update_one=False, if_data={'name': 'long'}, new_data={'name': 'long3', 'age': 23, 'prrtty': 'Yes'}) # 修改所有满足条件的数据
# 4. 删
mymongodb.delete(col='stu2', if_data={'name': 'long2'}) # 删除一条
mymongodb.delete(col='stu2', if_data={'name': 'long3'}, delete_one=False) # 删除所有满足条件的