当先锋百科网

首页 1 2 3 4 5 6 7

mongodb服务搭建

mongodb安装

sudo apt-get install mongodb
安装完毕后,mongod服务会自动开启,执行ps -ef | grep mongo可看到
在这里插入图片描述
在终端输入mongo,可看到
在这里插入图片描述

mongodb使用

为了防止linux系统默认最大文件打开数的限制影响mongodb服务的正常使用,使用ulimt -n 20000重新设置最大文件打开数
之后创建mongodb数据目录及日志目录,并启动服务,mongodb默认端口为27017

mkdir -p /home/ubuntu/mongdata/db
mkdir -p /home/ubuntu/mongdata/log
mongod --dbpath /home/ubuntu/mongodata/db/ --logpath /home/ubuntu/mongodata/log/ --maxConns=4000

mongodb开机自启动与监听

1.编写一个python脚本对mongod进程进行监听
import os
import time
import datetime

def main():

	while(1):
		output = os.popen("ps -ef | grep mongod").read()
		checkTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
		checker = output.find("mongod --dbpath /home/ubuntu/mongodata/db/")
		
		if checker == -1:
			mongoLogFile = open("./mongoServerlog.txt",'a+')
			logmess = checkTime+" restart mongodb service\n"
			mongoLogFile.write(logmess)
			output = os.popen("mongod --dbpath /home/ubuntu/mongodata/db/ --maxConns=2000").read();
			mongoLogFile.write(output)
			mongoLogFile.close()
		else:
			pass
		time.sleep(30)

if __name__ == "__main__":
	main()
2.python脚本开机自启动

1.创建autostart目录

cd ~/.config
sudo mkdir autostart

2.创建文件 app.desktop文件写入

[Desktop Entry]
Type=Application
Exec=python /home/ubuntu/mongodata/mongoMonit.py
Hidden=false
NoDisplay=false

python flask服务搭建

安装必要库

sudo pip install flask flask_cors
sudo pip install pymongo

编写restful中基本的get和post方法,并设置允许跨域请求,这里假设http客户端发来信息为json格式

#coding:utf-8

from flask import Flask, request, jsonify
from flask_cors import *
import json

app = Flask(__name__)
CORS(app, resources=r'/*')

@app.route('/')

#       功能:GET测试
#       输入参数:无
#       输出参数:无
#       本体状态:完成
#       外部方法:无
@app.route('/api/testget', methods = ['GET'])
def apiTestGet():
	jsonstr = json.dumps({"testget":1})
        return jsonify({"status":True, "testget":1})

#       功能:POST测试
#       输入参数:无
#       输出参数:无
#       本体状态:完成
#       外部方法:无
@app.route('/api/testpost', methods = ['POST'])
def apiTestPost():
        data=request.get_json(force=True)
        if data:
                print(data)
                return jsonify({"status":True})
        else:
                return jsonify({"status":False})
                
if __name__ == "__main__":
	app.run(host="0.0.0.0", port=18081)

此python服务程序推荐使用supervisor进行管理

python mongodb使用

数据库连接与增删改查

#coding:utf8

from pymongo import MongoClient

dbip = "127.0.0.1"
dbport = 27017

class dataBase():

	def __init__(self):
		self.conn = self.initDataBase()

	def initDataBase(self):
		conn = MongoClient(dbip, dbport)
		# db.authenticate(dbrootUser, dbrootPassword)
		return conn

	def dbFind(self,data):
		testDB = self.conn["dbdemo"]
		testSet = stockListDB["dbdemo"]
		findList = []
		for element in testSet.find({"USER":data}).limit(24):	#可对查找条数进行限制,若只需要查找一条,则使用find_one
			findList.append({"USER":element["USER"],"PASSWD":element["PASSWD"]})
		return findList

	def dbInsert(self,data):
		testDB = self.conn["dbdemo"]
		testSet= stockListDB["dbdemo"]
		testSet.insert_one({"USER":data["USER","PASSWD":data["PASSWD"]}) #若由多条数据需要插入,则使用insert_many,较单条逐一插入由明显效率提升

	def dbUpdate(self,data):
		testDB = self.conn["dbdemo"]
		testSet= stockListDB["dbdemo"]
		for element in testSet.find({"USER":data["USER"]}).limit(24):
		tempQuery = {"USER":data["USER"]}
		newValue = {"$set":{"PASSWD":data["PASSWD"]}}
		testSet.update_one(tempQuery,newValue)