基于Python、neo4j的音乐知识图谱可视化系统(提供源码)

python 复制代码
import os

from flask import Flask, request
from flask import jsonify
from flask_cors import CORS

from db_utils import DbUtil
from jwt_util import decode, encode
from model_search import neo4j_db

app = Flask(__name__)
CORS(app)  # 允许所有域名访问
neo4j_db_handle = neo4j_db()
user_id = None

# 获取项目目录
APP_PATH = os.path.dirname(__file__)
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{APP_PATH}/database'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# 初始化数据库
DbUtil.init_app(app)


@app.before_request
def before():
    url = request.path  # 当前请求的URL
    print('url:' + url)
    pass_url = ["/", "/api/login", "/api/sign_in"]
    if url.startswith("/static") or url in pass_url:
        pass
    else:
        token = request.headers.get('Token')
        if not token:
            return jsonify({
                "code": 403,
                "msg": "您还未登录,请先登录"
            })
        else:
            global user_id
            user_id = decode(token)['user_id']


@app.route('/api/login', methods=['POST'])
def login():
    global user_id
    user_id = 1
    params = request.get_json()
    handler = DbUtil()
    user = handler.authentication(params)
    if user:
        token = encode(user.id)
        return jsonify({
            "code": 200,
            "data": token
        })
    else:
        return jsonify({
            "code": 403,
            "msg": "用户名或密码错误"
        })


# 查询用户信息
@app.route('/api/userinfo', methods=['GET', 'POST'])
def userinfo():
    handler = DbUtil()
    global user_id
    result = handler.find_user(user_id)
    return jsonify({
        "code": 200,
        "data": result
    })


@app.route('/api/sign_in', methods=['POST'])
def sign_in():
    """
    注册
    """
    data = request.get_json()
    handler = DbUtil()
    return handler.add_user(data)


@app.route('/search_name_kg', methods=['GET', 'POST'])
def search_name():
    entity = request.json.get('name')
    json_data = neo4j_db_handle.get_kg_new(entity)
    return jsonify({
        "code": 200,
        "data": json_data
    })


@app.route('/api/find_list', methods=['POST'])
def find_list():
    # 获取前端传递的参数
    current = int(request.json.get('pageNum', 1))
    limit = int(request.json.get('pageSize', 10))
    name_query = request.json.get('name', '')
    json_data = neo4j_db_handle.find_list(current, limit, name_query)
    return jsonify({
        "code": 200,
        "data": json_data
    })


@app.route('/create_node', methods=['POST'])
def create_node():
    data = request.json
    node = neo4j_db_handle.create_node(data.get("type"), data.get("name"))
    return jsonify({
        "code": 200,
        "data": node
    })


@app.route('/update_node', methods=['POST'])
def update_node():
    data = request.json
    node = neo4j_db_handle.update_node(data.get("type"), data.get("id"), data.get("name"))
    return jsonify({
        "code": 200,
        "data": node
    })


@app.route('/delete_node', methods=['POST'])
def delete_node():
    data = request.json
    node = neo4j_db_handle.delete_node(data.get("type"), data.get("id"))
    return jsonify({
        "code": 200,
        "data": node
    })


if __name__ == '__main__':
    app.run(debug=True, port='5000', host='127.0.0.1')
相关推荐
FinAnalyzer4 分钟前
如何在 InsCodeAI 上搭建并使用 Jupyter Notebook 环境?
ide·python·jupyter
java1234_小锋6 分钟前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-文章分类下拉框实现
python·自然语言处理·flask
檀越剑指大厂7 分钟前
【Python系列】Flask 应用中的主动垃圾回收
开发语言·python·flask
檀越剑指大厂13 分钟前
【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
开发语言·python·flask
WXX_s25 分钟前
【OpenCV篇】OpenCV——03day.图像预处理(2)
人工智能·python·opencv·学习·计算机视觉
liliangcsdn33 分钟前
mac neo4j install & verifcation
数据库·neo4j
Jackilina_Stone2 小时前
【论文|复现】YOLOFuse:面向多模态目标检测的双流融合框架
人工智能·python·目标检测·计算机视觉·融合
双叶8362 小时前
(Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)
开发语言·windows·python
枫昕柚2 小时前
python
开发语言·python
木头左2 小时前
自动驾驶领域中的Python机器学习
python·机器学习·自动驾驶