本帖最后由 杰哥,我就服你 于 2019-5-16 14:28 编辑
mongodb与python的交互
1. mongdb和python交互的模块
pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo
2. 使用pymongo
- 导入pymongo并选择要操作的集合 数据库和集合乜有会自动创建
from pymongo import MongoClient client = MongoClient(host,port) collection = client[db名][集合名]
ret = collection.insert_one({"name":"test10010","age":33}) print(ret)
item_list = [{"name":"test1000{}".format(i)} for i in range(10)] #insert_many接收一个列表,列表中为所有需要插入的字典 t = collection.insert_many(item_list)
#find_one查找并且返回一个结果,接收一个字典形式的条件 t = collection.find_one({"name":"test10005"}) print(t)
结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针,但是只能够进行一次读取
#find返回所有满足条件的结果,如果条件为空,则返回数据库的所有 t = collection.find({"name":"test10005"}) #结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针, for i in t: print(i) for i in t: #此时t中没有内容 print(i)
#update_one更新一条数据 collection.update_one({"name":"test10005"},{"$set":{"name":"new_test10005"}})
# update_many更新全部数据 collection.update_many({"name":"test10005"},{"$set":{"name":"new_test10005"}})
#delete_one删除一条数据 collection.delete_one({"name":"test10010"})
#delete_may删除所有满足条件的数据 collection.delete_many({"name":"test10010"})
例子:
from pymongo import MongoClient
"""
步骤:
1. 导入: from pymongo import MongoClient
2. 链接: client = MongoClient
3. 获取要操作的集合: collection = client['数据库名']['集合名']
4. 操作集合, 增删改查
5. 关闭数据链接, 释放资源: client.close()
"""
class MongoTest(object):
def __init__(self):
"""创建client对象, 建立数据库链接"""
# 开启认证模式
# 方式1: 分别指定
# self.client = MongoClient(host='127.0.0.1', port=27017, username='py8', password='123')
# 方式2: 指定URI
# self.client = MongoClient('mongodb://py8:123@127.0.0.1:27017')
# 不开启认证模式
self.client = MongoClient()
# self.client = MongoClient(host='127.0.0.1', port=27017)
# print(self.client)
self.collection = self.client['py8']['test']
def __del__(self):
""" 关闭数据链接, 释放资源"""
self.client.close()
def insert_one(self):
"""插入一条数据"""
self.collection.insert_one({'name':'老王', 'age':18})
def insert_many(self):
"""插入多条数据"""
# 准备字典列表
datas = [{'name': 'test_{}'.format(i), 'age': i} for i in range(20)]
# 插入多条
self.collection.insert_many(datas)
def update_one(self):
"""更新一条数据"""
# 把年龄小于10岁的改为16岁
self.collection.update_one({'age':{'$lt': 10}}, {'$set': {'age': 16}})
def update_many(self):
"""更新多少条件"""
# 把年龄小于10岁的改为16岁
self.collection.update_many({'age':{'$lt': 10}}, {'$set': {'age': 16}})
def find_one(self):
"""查看一条数据"""
data = self.collection.find_one({'age': {'$lt': 16}})
print(data)
print(type(data))
def find_many(self):
"""查询多条数据"""
cursor = self.collection.find({'age': {'$lt': 16}})
# 查询多少数据, 返回时一个游标对象, 可以进行遍历, 但是只能遍历一次
# print(cursor)
for data in cursor:
print(data)
print('='*50)
for data in cursor:
print(data)
def delete_one(self):
"""删除一条数据"""
self.collection.delete_one({'age': {'$lte': 16}})
def delete_many(self):
"""删除多条数据"""
self.collection.delete_many({'age': {'$lte': 16}})
if __name__ == '__main__':
mt = MongoTest()
# mt.insert_one()
# mt.insert_many()
# mt.update_one()
# mt.update_many()
# mt.find_one()
# mt.find_many()
# mt.delete_one()
mt.delete_many()
|
|