mongodb与python随手记
在python中使用pymongo连接mongodb数据库.
基本代码如下:
from pymongo import MongoClient
client = MongoClient('127.0.0.1', 27017) # mongodb的地址
db_name = 'myfirstmongo' # 数据库的名字
db = client[db_name] # 现在db就是这个数据库了
collection = db['testone'] # 'testone'是集合的名字,现在collection就是我们要用的集合了
查询一条数据和简单的分页操作:
import json
from bson import json_util as jsonb
def get_data_by_key(key):
item = collection.find({"key":key}) # 直接用集合查询,find是mongo的方法
# print item # 查询返回的item是一个对象,打印出来是<pymongo.cursor.Cursor object at 0x7f5d9bbc6f50>
info = jsonb.dumps(item) # 使用bjson将对象转换成可读的形式,现在的info是str类型
data = json.loads(info) # 使用json将字符串转换成python的相应类型,这里data是list列表
return data
def get_page_data(page):
page_len = 20 # page_len是一页的长度,也可以作为参数传进来
skp = (int(page)-1)*page_len # skip是为了只查询某一页的,跳过之前的数据
item = collection.find().skip(skp).limit(page_len) # 从skp开始,查询page_len条数据
info = jsonb.dumps(item) # 处理数据
data = json.loads(info) # 处理数据
return data
get_data_by_key是通过某一个条件查询,也可以多条件查询.要注意key的数据类型.
增删改等操作与上面过程类似,只需修改collection对应的操作函数.
删除数据:collection.find_one_and_delete({'key':key}),或者collection.remove({'key':key})
谨慎使用remove(),她的括号里为空时,会删掉集合里面的所有数据;
增加数据:collection.insert({'key':'123','msg':'test'}),也可插入多条,将多条数据放入列表中,将列表传入insert()即可;
更新数据:collection.update({'key':'123'},{'msg':'new'},True,True),
update参数含义:第一个是查询参数,第二个是要更新的内容,第三个是决定在没有查到该条数据时是否创建,第四个是查询到多条数据时是否都要更改;
更新数据还可以使用修改器,这里不做记录了.