点击上方“Python3X”,选择“置顶或者星标”
第一时间收到精彩推送!
Python Every Day, 第 21 天
在每日一题第20期中写了Python操作MySQL,群里的小伙伴让分享一下Mongo的用法。
关系型数据库和非关系型数据库最主要的区别在于
关系型数据库:采用关系模型来组织数据结构,比如我们使用MySQL的时候需要先设计表结构,确定字段值。
非关系型数据库:使用键值对进行存储,不需要提前设定好字段。读写性能相对较高。
{ "_id": ObjectId("5ccd76c0dfe2aa0c8c626466"), "name": "颐和园", "address": "北京市海淀区新建宫门路19号", "count": 594, "point": "116.276887,39.999497", "city": "北京"}"_id": ObjectId("5ccd76c0dfe2aa0c8c626466"),
"name": "颐和园",
"address": "北京市海淀区新建宫门路19号",
"count": 594,
"point": "116.276887,39.999497",
"city": "北京"
}
pip3 install pymongo
每条数据其实都有一个_id属性来唯一标识,如果不手动指定,会自动生成一个Object类型的id
新增插入
import pymongo# 通过pymongo库中的MongoClient,创建mongo连接服务,参数host和端口port 默认27017client = pymongo.MongoClient(host='127.0.0.1', port=27017)# 也可以写成这样#client = pymongo.MongoClient('mongodb://localhost:27017')# 指定数据库 python3x# db = client['python3x']db = client.python3x# 指定集合temp(collection), 也可以理解为表,col = db.temp # db['temp'] 两种方式都可以# 插入一条result = col.insert({ 'name': 'tom', 'age': 19, 'skill': ['python', 'javascript']})# 返回插入的id 5d4bf9288c112fd7721d7f8cprint('插入完成', result)# 可以多条插入, 返回_id列表 [ObjectId('5d4bf9288c112fd7721d7f8d'), ObjectId('5d4bf9288c112fd7721d7f8e')]result = col.insert([{'name': 'lily'}, {'name': 'liming'}])print(result)# 插入单条数据 推荐使用 insert_oneresult = col.insert_one({ '_id': 1, 'name': 'python3x', 'skill': ['java', 'python', 'javascript'], 'sex': '1'})print('insert_one :', result)# 插入多条数据,官方推荐使用insert_manyresult = col.insert_many([ { '_id': 2, 'name': '小a' }, { '_id': 3, 'name': '小b' }])print('insert_many: ', result)
# 通过pymongo库中的MongoClient,创建mongo连接服务,参数host和端口port 默认27017
client = pymongo.MongoClient(host='127.0.0.1', port=27017)
# 也可以写成这样
#client = pymongo.MongoClient('mongodb://localhost:27017')
# 指定数据库 python3x
# db = client['python3x']
db = client.python3x
# 指定集合temp(collection), 也可以理解为表,
col = db.temp # db['temp'] 两种方式都可以
# 插入一条
result = col.insert({
'name': 'tom',
'age': 19,
'skill': ['python', 'javascript']
})
# 返回插入的id 5d4bf9288c112fd7721d7f8c
print('插入完成', result)
# 可以多条插入, 返回_id列表 [ObjectId('5d4bf9288c112fd7721d7f8d'), ObjectId('5d4bf9288c112fd7721d7f8e')]
result = col.insert([{'name': 'lily'}, {'name': 'liming'}])
print(result)
# 插入单条数据 推荐使用 insert_one
result = col.insert_one({
'_id': 1,
'name': 'python3x',
'skill': ['java', 'python', 'javascript'],
'sex': '1'
})
print('insert_one :', result)
# 插入多条数据,官方推荐使用insert_many
result = col.insert_many([
{
'_id': 2,
'name': '小a'
},
{
'_id': 3,
'name': '小b'
}
])
print('insert_many: ', result)
可以通过find(), find_one()对数据进行查询
# 查找name 为lily的数据result = col.find_one({'name': 'lily'})print(result) # {'_id': ObjectId('5d4bf9288c112fd7721d7f8d'), 'name': 'lily'}print(result['_id']) # 5d4bf9288c112fd7721d7f8d# 查找所有age 大于18的数据result = col.find({'age': {'$gt': 18}})for i in result: print(i) # {'_id': ObjectId('5d4bf833037b3139d69cea25'), 'name': 'tom', 'age': 19, 'skill': ['python', 'javascript']}# 查找age 大于等于18的信息条数count = col.count({'age': {'$gte': 18}})print(count)
result = col.find_one({'name': 'lily'})
print(result) # {'_id': ObjectId('5d4bf9288c112fd7721d7f8d'), 'name': 'lily'}
print(result['_id']) # 5d4bf9288c112fd7721d7f8d
# 查找所有age 大于18的数据
result = col.find({'age': {'$gt': 18}})
for i in result:
print(i) # {'_id': ObjectId('5d4bf833037b3139d69cea25'), 'name': 'tom', 'age': 19, 'skill': ['python', 'javascript']}
# 查找age 大于等于18的信息条数
count = col.count({'age': {'$gte': 18}})
print(count)
$lt 小于 {'age': {'$lt': 20}}
$gt 大于 {'age': {'$gt': 20}}
$lte 小于等于 {'age': {'$lte': 20}}
$gte 大于等于 {'age': {'$gte': 20}}
$ne 不等于 {'age': {'$ne': 20}}
$in 在范围内 {'age': {'$in': [20, 23]}}
$nin 不在范围内 {'age': {'$nin': [20, 23]}}
更新操作
# 将name 为tom的数据的年龄更新为23col.update({'name': 'tom'}, {'$set': {'age': 23}})
# 再次查找,发现age已经被更新
result = col.find_one({'name': 'tom'})print(result) # {'_id': ObjectId('5d4bf833037b3139d69cea25'), 'name': 'tom', 'age': 23, 'skill': ['python', 'javascript']}'tom'})
print(result) # {'_id': ObjectId('5d4bf833037b3139d69cea25'), 'name': 'tom', 'age': 23, 'skill': ['python', 'javascript']}
# 删除name 为tom的信息col.remove({'name': 'tom'})result = col.find_one({'name': 'tom'})print(result) # None
col.remove({'name': 'tom'})
result = col.find_one({'name': 'tom'})
print(result) # None
以上,便是 今天的分享,希望大家喜欢,觉得内容不错的,欢迎点击「在看」支持,谢谢各位。
如需查看更多[Python Every Day]系列,请点击我的主页的【每日一题】菜单。
感谢您的阅读