12. python联用mongodb
标签(空格分隔): 4.2python(核心)
一 pymongo写入
导入模块
import pymongo
from pymongo import MongoClient
1. 连接本地数据库服务
connection = MongoClient(‘localhost’)
2. 获取数据库对象
db=connection.demo
3. 获取集合对象employees(没有则创建集合)
emp=db.employees
4. 根据需求 清空所有
emp.delete_many({})
5. 写入
(1) 插入一条
-
语法: emp.insert_one(dict)
-
示例1:
zhangsan= {
‘name’:‘张三’,
‘age’:30,
‘sex’:‘男’,
‘oontact’:{
‘email1’:‘abc@qq.com’,
‘email2’:‘def@163.com’
}
}
- 执行插入语句
result1=emp.insert_one(zhangsan)
print(result1)
print(dir(result1))
- 示例2:
zhangsanfeng= {
‘name’:‘张三丰’,
‘age’:500,
‘sex’:‘男’,
‘contact’:{
‘email1’:‘abc4839@qq.com’,
‘email2’:‘def@82082.com’
}
}
emp.insert_one(zhangsanfeng)
- 查看方式:
mongopy—双击—data
(2) 插入多条
- 语法: emp.insert_many([dict1,dict2,…])
lisi={
‘name’: ‘李四’,
‘habit’:{
‘habit1’:‘eat’,
‘habit2’:‘play’
}
}
wangwu={‘name’:‘王五’,‘age’:20,‘sex’:‘男’}
- 运行:
emp.insert_many([lisi,wangwu])
二 pymongo查询
1. 导入模块
import pymongo
from pymongo import MongoClient
2. 连接本地/获取数据库对象/获取集合对象
connection = MongoClient(‘localhost’)
db=connection.demo
emp=db.employees
3. 查询内容
3.1 无条件查询
cursor = emp.find({})
print(list(cursor)) 查询输出所有(一个列表)
cursor = emp.find({})
for each in cursor:
print(each) 查询输出每个(多个集合)
3.2 有条件查询
(1)单条件查询
- 语法: emp.find({键1:值1})
cursor = emp.find({‘name’: ‘张三’})
for each in cursor:
print(each)
(2)包含条件查询
- 语法: emp.find({ 键1:{’$in’:[值1,值2]} })
cursor = emp.find({
‘name’:{
‘$in’:[‘张三’,‘李四’]}
})
for each in cursor:
print(each)
(3)多条件and查询
- 语法: emp.find({ ‘键1’:{’$in’:[‘值1’,‘值2’]}, ‘键2’:值2 })
cursor = emp.find({‘name’: ‘张三’,‘sex’:‘男’})
cursor = emp.find({
‘name’:{’$in’:[‘张三’,‘李四’]},
‘age’:30
})
for each in cursor:
print(each)
(4)多条件or查询(注意转义符)
- 语法: emp.find({ ‘键1’:{’$in’: [ ‘值1’,‘值2’]}, {‘键2’:{’$gt’:int}} })
cursor = emp.find({
‘$or’:[
{‘name’:{’$in’:[‘张三’,‘李四’]}},
{‘age’:{’$gt’:25}}
]
})
for each in cursor:
print(each)
(5) 子查询
- 语法: emp.find({‘contact.email1’:‘abc4839@qq.com’})
cursor=emp.find({
‘contact.email1’:‘abc4839@qq.com’
})
for each in cursor:
print(each)
#三 pymongo更新数据
1. 导入模块
import pymongo
from pymongo import MongoClient
2. 连接本地/获取数据库对象/获取集合对象
connection = MongoClient(‘localhost’)
db=connection.demo
emp=db.employees
3. 更新信息
(1)更改单条
- 语法:
emp.update_one(
{‘被更改对象键’:‘被更改对象值’},
{’$set’:
{
‘新键1’:‘新值1’,
‘新键2’:‘新值2’
}})
- 示例: 将王五的名字更新为王舞,性别更新为女汉子
cursor = emp.update_one(
{‘name’:‘王五’},
{’$set’:
{
‘name’:‘王舞’,
‘sex’:‘女汉子’
}
}
)
(2)更新多条
- 语法:
emp.update_many(
{‘被改对象键1’:{’$in’:[‘被改对象值1’,‘被改对象值2’]}},
{’$inc’:{
‘新键1’:新值1
}})
- 示例: 过了十年大家都要涨10岁
result=emp.update_many({‘name’:{’$in’:[‘张三’,‘李四’]}},
{’$inc’:{
‘sge’:10
}
}
)
print(result.raw_result)
(3)更新不存在的数据
-
语法:
emp.update_one(
{‘新键1’:‘新值1’},
{’$set’:{‘新键2’:‘新值2’}},
upsert=True) -
示例: 添加钱八,并加入绰号八爷
emp.update_one(
{‘name’:‘钱八’},
{’$set’:{‘nickname’:‘八爷’}},
upsert=True # 使没有的字段,更新增加进去
)
(4)更新时间进去–时间戳
emp.update_one(
{‘name’:‘小七’},
{’$currentDate’:{
‘create_time’:True, # True 相当于 {’$type’:‘date’}
‘mod_time’:{’$type’:‘timestamp’},
}},upsert=True
)
(5)更新字段内的字段
- 语法:
emp.update_one(
{‘被改对象键1’:‘被改对象值1’},
{’$set’:{
‘被改对象键2.字段内置键1’:‘内置值1’,
‘被改对象键2.字段内置键2’:‘内置值2’
}}
)
- 示例: 将李四的两个爱好,改为运动和学习
emp.update_one(
{‘name’:‘李四’},
{’$set’:{
‘habit.habit1’:‘学习’,
‘habit.habit2’:‘运动’
}}
)
#四 pymongo删除数据
from pymongo import MongoClient 导入模块
connect=MongoClient(‘localhost’) 连接本地
db=connect.demo 连接数据库
emp=db.employees 连接集合
(1)删除一条数据
语法: emp.delete_one()
result = emp.delete_one({
‘name’:‘张三丰’
})
print(result.raw_result)
(2)删除多条
语法: emp.delete_many()
result = emp.delete_many({
‘age’:{’$gt’:25}
})
print(result.raw_result)