基于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')
相关推荐
开开心心就好3 小时前
高效视频倍速播放插件推荐
python·学习·游戏·pdf·计算机外设·电脑·音视频
yzx9910134 小时前
Python开发系统项目
人工智能·python·深度学习·django
FreakStudio5 小时前
一文速通 Python 并行计算:12 Python 多进程编程-进程池 Pool
python·嵌入式·面向对象·多进程·并行计算·电子diy
天才测试猿6 小时前
接口自动化测试之pytest接口关联框架封装
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
先做个垃圾出来………6 小时前
Python中使用pandas
开发语言·python·pandas
不爱吃山楂罐头7 小时前
第三十三天打卡复习
python·深度学习
西柚小萌新7 小时前
【大模型:知识图谱】--3.py2neo连接图数据库neo4j
数据库·知识图谱·neo4j
weixin_307779137 小时前
Neo4j 数据可视化与洞察获取:原理、技术与实践指南
信息可视化·架构·数据分析·neo4j·etl
Dxy12393102167 小时前
DrissionPage 性能优化实战指南:让网页自动化效率飞升
运维·爬虫·python·性能优化·自动化
蹦蹦跳跳真可爱5898 小时前
Python----目标检测(《SSD: Single Shot MultiBox Detector》论文和SSD的原理与网络结构)
人工智能·python·深度学习·神经网络·目标检测·计算机视觉