您的位置:首页 > 数据库 > Mongodb

Python 连接MongoDB数据库手札(PyMongo)

2016-07-10 14:51 465 查看

1 PyMango 安装

如果还不知道怎么安装MongoDB可以先看这里,包括如何启动相应的服务

Ubuntu の MongoDB 安装教程及简单操作

要想在Python中使用MongoDB,需要安装PyMongo,通过PyMongo 我们在Python中就可以链接MongoDB数据库了,这里我是使用了Pip来安装的,如果还没清楚Pip怎么安装的可以看看之前的博文

pip install pymongo


完成了这条指令之后,我们就可以在Python当中进行数据库的连接操作了。

2 Python链接代码

在这里我直接给出一个示例了,注意的是,Pymango可以直接把Python中dict类型的数据直接存入,也可以直接取出,是不是很方便?

#encoding:utf=8
import pymongo as pm
import json

class MongoOperator:
def __init__(self, host, port, db_name, default_collection):
'''
设置mongodb的地址,端口以及默认访问的集合,后续访问中如果不指定collection,则访问这个默认的
:param host: 地址
:param port: 端口
:param db_name: 数据库名字
:param default_collection: 默认的集合
'''
#建立数据库连接
self.client = pm.MongoClient(host=host, port=port)
#选择相应的数据库名称
self.db = self.client.get_database(db_name)
#设置默认的集合
self.collection = self.db.get_collection(default_collection)

def insert(self, item, collection_name =None):
'''
插入数据,这里的数据可以是一个,也可以是多个
:param item: 需要插入的数据
:param collection_name:  可选,需要访问哪个集合
:return:
'''
if collection_name != None:
collection = self.db.get_collection(self.db)
collection.insert(item)
else:
self.collection.insert(item)

def find(self, expression =None, collection_name=None):
'''
进行简单查询,可以指定条件和集合
:param expression: 查询条件,可以为空
:param collection_name: 集合名称
:return: 所有结果
'''
if collection_name != None:
collection = self.db.get_collection(self.db)
if expression == None:
return collection.find()
else:
return collection.find(expression)
else:
if expression == None:
return self.collection.find()
else:
return self.collection.find(expression)

def get_collection(self, collection_name=None):
'''
很多时候单纯的查询不能够通过这个类封装的方法执行,这时候就可以直接获取到对应的collection进行操作
:param collection_name: 集合名称
:return: collection
'''
if collection_name == None:
return self.collection
else:
return self.get_collection(collection_name)

db = MongoOperator('10.0.0.39',27017,'test_db','test_collection')
item = {}
item['name'] = 'mebiuw'
item['age'] = '23'
db.insert(item)
for item in db.find():
print(item)


3 其他

如果有其他我再补充,这篇主要是代码上的,上一篇主要是环境上的,遇到问题我会及时补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息