使用python搭建mongodb操作服务

搭建python服务

python 复制代码
from flask import Flask, request, jsonify
from pymongo import MongoClient

app = Flask(__name__)

# 配置MongoDB连接
client = MongoClient('mongodb://localhost:27017/')

def get_collection(db_name, collection_name):
    db = client[db_name]
    collection = db[collection_name]
    return collection

# 插入一条记录
@app.route('/insert_one', methods=['POST'])
def insert_one():
    data = request.json
    db_name = data.pop('db')
    collection_name = data.pop('collection')
    collection = get_collection(db_name, collection_name)
    result = collection.insert_one(data)
    return jsonify({'inserted_id': str(result.inserted_id)})

# 插入多条记录
@app.route('/insert_many', methods=['POST'])
def insert_many():
    data = request.json
    db_name = data.pop('db')
    collection_name = data.pop('collection')
    documents = data.pop('documents')
    collection = get_collection(db_name, collection_name)
    result = collection.insert_many(documents)
    return jsonify({'inserted_ids': [str(id) for id in result.inserted_ids]})

# 查找一条记录
@app.route('/find_one', methods=['GET'])
def find_one():
    db_name = request.args.get('db')
    collection_name = request.args.get('collection')
    query = request.args.to_dict()
    query.pop('db')
    query.pop('collection')
    collection = get_collection(db_name, collection_name)
    result = collection.find_one(query)
    if result:
        result['_id'] = str(result['_id'])
    return jsonify(result)

# 查找多条记录
@app.route('/find', methods=['GET'])
def find():
    db_name = request.args.get('db')
    collection_name = request.args.get('collection')
    query = request.args.to_dict()
    query.pop('db')
    query.pop('collection')
    collection = get_collection(db_name, collection_name)
    results = collection.find(query)
    result_list = []
    for result in results:
        result['_id'] = str(result['_id'])
        result_list.append(result)
    return jsonify(result_list)

# 统计记录数
@app.route('/count', methods=['GET'])
def count():
    db_name = request.args.get('db')
    collection_name = request.args.get('collection')
    query = request.args.to_dict()
    query.pop('db')
    query.pop('collection')
    collection = get_collection(db_name, collection_name)
    count = collection.count_documents(query)
    return jsonify({'count': count})

if __name__ == '__main__':
    app.run(debug=True)

启用python正式服务

  • 首先安装Gunicorn:

    bash 复制代码
    pip install gunicorn
  • 运行你的Flask应用:

    bash 复制代码
    gunicorn -w 4 -b 0.0.0.0:8000 app:app

    这里,-w 4 表示使用4个工作进程,-b 0.0.0.0:8000 表示绑定到所有网络接口的8000端口,app:app 表示Flask应用的入口点(文件名是app.py,里面的Flask实例名称是app)。

测试代码

bash 复制代码
curl -X POST -H "Content-Type: application/json" -d '{"db": "your_database", "collection": "your_collection", "name": "John Doe", "age": 30}' http://localhost:8000/insert_one
相关推荐
WaaTong几秒前
Java反射
java·开发语言·反射
Troc_wangpeng2 分钟前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的4 分钟前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ17 分钟前
C#语言:从入门到精通
开发语言·c#
全能全知者23 分钟前
docker快速安装与配置mongoDB
mongodb·docker·容器
齐 飞25 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
云空26 分钟前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
暮毅30 分钟前
10.Node.js连接MongoDb
数据库·mongodb·node.js
童先生38 分钟前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu39 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法