python 使用mongodb数据库
1,数据库安装
代码下载路径https://www.mongodb.com/download-center#community
选择自己需要的tar包下载,我下载了 mongodb-linux-x86_64-ubuntu1804-4.0.10.tgz
tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.0.10.tgz -C //usr/local # 解压到/usr/local 目录下
mv mongodb-linux-x86_64-ubuntu1804-4.0.10/ /usr/local/mongodb # 修改名称
在/etc/profile 中添加环境变量
export PATH=/usr/local/mongodb/bin:$PATH
sh /etc/profile 让环境变量生效
ok 数据库安装完毕了
2,启动数据库
启动数据库服务命令:
./mongod --dbpath=/home/andrew/mongodb
--dbpath指定了数据库存放路径。
启动数据库后台管理程序mongo,它是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境
./mongo
之后我们可以做些测试了:
比如:
db.star.insert({x:10}) 向集合star中插入数据{x:10},这时候可以观察/home/andrew/mongodb目录下有文件变化。
其他的测试不再这里说了
3,安装 pymongo
Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接
安装命令如下:
pip install pymongo
4, 数据库增删改查询操作代码封装
import pymongo
mydb=None
def db_mongodb_init(url):
global mydb
myclient = pymongo.MongoClient(url)
dblist = myclient.list_database_names()
print("dblist:",dblist)
mydb = myclient["Print_Analysis"]
log_info = mydb["log_info"]
case_info = mydb["case_info"]
####colletion_name 集合的名字
####document 文档数据
####many True 表示多条文档数据
def db_mongodb_insert(colletion_name,document,many):
global mydb
col=mydb[colletion_name]
if many:
ret=col.insert_many(document)
print("inserted_ids",ret.inserted_ids)
else:
ret=col.insert_one(document)
print("inserted_id", ret.inserted_id)
return ret
###query : update的查询条件,类似sql update查询内where后面的。
###update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
def db_mongodb_updata(colletion_name,query,update,many):
col = mydb[colletion_name]
if many:
col.update_many(query,update)
else:
col.update_one(query,update)
###query :可选,使用查询操作符指定查询条件
###projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
def db_mongodb_query(colletion_name,query,projection,many):
global mydb
col = mydb[colletion_name]
if many:
if projection==None and query==None:
col.find()
elif projection == None:
col.find(query)
else:
col.find(query, projection)
else:
if projection==None and query==None:
col.find_one()
elif projection == None:
col.find_one(query)
else:
col.find_one(query, projection)
def db_mongodb_delete(colletion_name,query,many):
global mydb
col = mydb[colletion_name]
if many:
col.delete_many(query)
else:
col.delete_one(query)