Commit 2b249c5a authored by haoyanbin's avatar haoyanbin

1

parent 0f897af2
......@@ -11,12 +11,11 @@ def create_app(test_config=None):
DATABASE=os.path.join(app.instance_path, 'apps.sqlite'),
)
from app.controller import search
from app.controller import importdata
from app.controller import auth
app.register_blueprint(auth.bp)
app.register_blueprint(importdata.bp)
from app.controller import search,importdata,neodata,auth
app.register_blueprint(search.bp)
app.register_blueprint(importdata.bp)
app.register_blueprint(neodata.bp)
app.register_blueprint(auth.bp)
if test_config is None:
# load the instance config, if it exists, when not testing
......
This diff is collapsed.
This diff is collapsed.
import re
from flask import Blueprint, request, json
from pyecharts import options as opts
from pyecharts.charts import Graph as pg
from app.model.base import dbconn, graph
# from pyecharts import options as opts
# from pyecharts.charts import Graph as pg
from app.model.base import dbconn, graph_driver
bp = Blueprint('search', __name__, url_prefix='/search')
......@@ -34,28 +34,31 @@ def illness_search():
for val1 in vocab_data:
search_data.append(keyword_clinical[val1])
# strData = jieba.cut(data['search_str'], cut_all=False)
# # strData = jieba.cut(data['search_str'], cut_all=False)
# graph_sql = "match (n:`疾病(三)`) "
#
# for search_str in search_data:
# if search_str == '':
# continue
# graph_sql += " with n match (n:`疾病(三)`)-[*1]->(a) where a.name='" + search_str + "' "
#
# graph_sql += " return n"
#
# graph_data = graph.run(graph_sql).data()
# # graph_sql = "match (n:`疾病(三)`) "
# #
# # for search_str in search_data:
# # if search_str == '':
# # continue
# # graph_sql += " with n match (n:`疾病(三)`)-[*1]->(a) where a.name='" + search_str + "' "
# #
# # graph_sql += " return n"
# #
# # graph_data = graph.run(graph_sql).data()
if len(search_data) == 0:
return ''
illness_data = {}
for search_str in search_data:
if search_str == '':
continue
graph_sql = "match (n:`疾病(三)`)-[*1]->(a:`病症`) where a.name='" + search_str + "' return n"
graph_sql = "match (n:`疾病`)-[*1]->(a:`病症`) where a.name='" + search_str + "' return n"
graph_data = graph.run(graph_sql).data()
records, _, _ = graph_driver.query(graph_sql)
for val2 in graph_data:
for val2 in records:
if val2['n']['name'] in illness_data.keys():
illness_data[val2['n']['name']]['num'] += 1
else:
......@@ -68,16 +71,16 @@ def illness_search():
list_illness_data = list(illness_data)
for key1 in list_illness_data:
graph_sql2 = "match (a:`疾病(三)`)-[]->(m:`治疗方案`)-[]->(n:`药品`) where a.name='" + key1 + "' return m,n"
graph_sql2 = "match (a:`疾病`)-[]->(m:`治疗方案`)-[]->(n:`药品`) where a.name='" + key1 + "' return m,n"
graph_data2 = graph.run(graph_sql2).data()
records2, _, _ = graph_driver.query(graph_sql2)
graph_sql3 = "match (a:`疾病(三)`)-[]->(m:`治疗方案`) where a.name='" + key1 + "' return m,n"
# graph_sql3 = "match (a:`疾病`)-[]->(m:`治疗方案`) where a.name='" + key1 + "' return m,n"
graph_data3 = graph.run(graph_sql3).data()
# graph_data3 = graph.run(graph_sql3).data()
medicinal = {}
for val2 in graph_data2:
for val2 in records2:
if val2['m']['name'] in medicinal.keys():
medicinal[val2['m']['name']].append(val2['n']['name'])
else:
......@@ -90,71 +93,72 @@ def illness_search():
# print(result)
return json.dumps(result)
return "1"
def testaaa():
illnessDict = {} # 疾病
symptomsDict = {} # 病症
shipsData = {} # 三元组
graph_sql = "match (n:`疾病(三)`)-[*1]->(a:`病症`) where a.name='" + search_str + "' return n"
graph_data = graph.run(graph_sql).data()
while graph_data.forward():
for relation in graph_data.current['p']:
print(list(relation.types()))
illness_node = relation.start_node
symptoms_node = relation.end_node
relation_type = list(relation.types())[0]
illness_node_label = str(illness_node.labels).strip(":")
symptoms_node_label = str(symptoms_node.labels).strip(":")
# 存储三元组关系
if illness_node['id'] in shipsData.keys():
target_dict = shipsData.get(illness_node['id'])
target_dict.setdefault(symptoms_node['id'], relation_type)
else:
target_dict = {symptoms_node['id']: relation_type}
shipsData[illness_node['id']] = target_dict
# 存储节点
if ("`疾病(三)`" == illness_node_label) and (illness_node['id'] not in illnessDict.keys()):
illnessDict[illness_node['id']] = illness_node['name']
if ("病症" == symptoms_node_label) and (symptoms_node['id'] not in symptomsDict.keys()):
symptomsDict[symptoms_node['id']] = symptoms_node['name']
json_list = []
for illness_key, value in shipsData.items():
for symptoms_key, rel_type in value.items():
result_dict = {
'illness': illnessDict[illness_key],
'rel_type': rel_type,
'symptoms': symptomsDict[symptoms_key]
}
json_list.append(result_dict)
print(len(json_list))
for i in range(len(json_list)):
print("{}-[{}]->{}".format(json_list[i]['illness'], json_list[i]['rel_type'], json_list[i]['symptoms']))
return json_list
data_dict = set()
nodes = []
links = []
for i in range(len(json_list)):
if json_list[i]['illness'] not in data_dict:
data_dict.add(json_list[i]['illness'])
nodes.append({'name': json_list[i]['illness'], "symbolSize": 10, 'draggable': 'true'})
if json_list[i]['symptoms'] not in data_dict:
data_dict.add(json_list[i]['symptoms'])
nodes.append({'name': json_list[i]['symptoms'], "symbolSize": 10, 'draggable': 'true'})
links.append({'source': json_list[i]['illness'], 'target': json_list[i]['symptoms']})
pg_graph = pg(init_opts=opts.InitOpts(width='1000px', height='800px'))
pg_graph.add("", nodes, links, repulsion=8000, edge_symbol=['', 'arrow'])
pg_graph.set_global_opts(title_opts=opts.TitleOpts(title="病症对应的疾病"))
# illnessDict = {} # 疾病
# symptomsDict = {} # 病症
# shipsData = {} # 三元组
# graph_sql = "match (n:`疾病(三)`)-[*1]->(a:`病症`) where a.name='" + search_str + "' return n"
# graph_data = graph.run(graph_sql).data()
# while graph_data.forward():
# for relation in graph_data.current['p']:
# print(list(relation.types()))
# illness_node = relation.start_node
# symptoms_node = relation.end_node
# relation_type = list(relation.types())[0]
# illness_node_label = str(illness_node.labels).strip(":")
# symptoms_node_label = str(symptoms_node.labels).strip(":")
# # 存储三元组关系
# if illness_node['id'] in shipsData.keys():
# target_dict = shipsData.get(illness_node['id'])
# target_dict.setdefault(symptoms_node['id'], relation_type)
# else:
# target_dict = {symptoms_node['id']: relation_type}
# shipsData[illness_node['id']] = target_dict
# # 存储节点
# if ("`疾病(三)`" == illness_node_label) and (illness_node['id'] not in illnessDict.keys()):
# illnessDict[illness_node['id']] = illness_node['name']
# if ("病症" == symptoms_node_label) and (symptoms_node['id'] not in symptomsDict.keys()):
# symptomsDict[symptoms_node['id']] = symptoms_node['name']
# json_list = []
# for illness_key, value in shipsData.items():
# for symptoms_key, rel_type in value.items():
# result_dict = {
# 'illness': illnessDict[illness_key],
# 'rel_type': rel_type,
# 'symptoms': symptomsDict[symptoms_key]
# }
# json_list.append(result_dict)
# print(len(json_list))
# for i in range(len(json_list)):
# print("{}-[{}]->{}".format(json_list[i]['illness'], json_list[i]['rel_type'], json_list[i]['symptoms']))
# return json_list
# data_dict = set()
# nodes = []
# links = []
# for i in range(len(json_list)):
# if json_list[i]['illness'] not in data_dict:
# data_dict.add(json_list[i]['illness'])
# nodes.append({'name': json_list[i]['illness'], "symbolSize": 10, 'draggable': 'true'})
# if json_list[i]['symptoms'] not in data_dict:
# data_dict.add(json_list[i]['symptoms'])
# nodes.append({'name': json_list[i]['symptoms'], "symbolSize": 10, 'draggable': 'true'})
# links.append({'source': json_list[i]['illness'], 'target': json_list[i]['symptoms']})
# pg_graph = pg(init_opts=opts.InitOpts(width='1000px', height='800px'))
# pg_graph.add("", nodes, links, repulsion=8000, edge_symbol=['', 'arrow'])
# pg_graph.set_global_opts(title_opts=opts.TitleOpts(title="病症对应的疾病"))
# print('/'.join(strData)+"")
......@@ -164,5 +168,6 @@ def testaaa():
# )
# print(drug)
# return render_template('index.html')
return pg_graph.render_notebook()
# return pg_graph.render_notebook()
# return json.dumps(list(strData))
return "1"
\ No newline at end of file
from lib.libmysql import MYSQL, connect_db
from py2neo import Graph, Node, Relationship, NodeMatcher
from lib.libmysql import MYSQL
from lib.neo import NEO
dbconn = MYSQL(
dbhost='39.96.85.45',
......@@ -20,4 +20,14 @@ dbconn2 = MYSQL(
)
graph = Graph("bolt://gds-2zeyv40mi12s6mjc149870pub.graphdb.rds.aliyuncs.com:3734", auth=("dbc_tair", "dbc_tair888888"))
# graph = Graph("", auth=("neo4j", "11111111"))
# graph = Graph("bolt://gds-2zeyv40mi12s6mjc149870pub.graphdb.rds.aliyuncs.com:3734", auth=("dbc_tair", "dbc_tair888888"))
# print(graph)
# graph_driver = GraphDatabase.driver("bolt://gds-2zeyv40mi12s6mjc149870pub.graphdb.rds.aliyuncs.com:3734",auth=("dbc_tair", "dbc_tair888888"),encrypted=False)
graph_driver = NEO(
dbhost='gds-2zeyv40mi12s6mjc149870pub.graphdb.rds.aliyuncs.com',
dbuser='dbc_tair',
dbpwd='dbc_tair888888'
)
# encoding: utf-8
from neo4j import GraphDatabase
class NEO:
def __init__(self, dbhost, dbuser, dbpwd, dbport=3734):
self.dbhost = dbhost
self.dbport = dbport
self.dbuser = dbuser
self.dbpwd = dbpwd
self.connection = self.session()
def session(self):
connection = GraphDatabase.driver(
uri="bolt://"+self.dbhost+":"+str(self.dbport),
auth=(self.dbuser,self.dbpwd),
encrypted=False
)
return connection
def execute_query(self, sql, **kwargs):
return self.connection.execute_query(sql, **kwargs)
def insert(self, sql, **kwargs):
return self.connection.execute_query(sql, **kwargs)
def query(self, sql, parameters={}):
return self.connection.execute_query(sql, parameters_=parameters)
def close(self):
if getattr(self, 'connection', 0):
return self.connection.close()
def __del__(self):
self.close()
beautifulsoup4==4.12.3
clickhouse_driver==0.2.7
clickhouse-driver==0.2.7
Flask==3.0.3
py2neo==2021.2.4
py2neo==2021.2.3
pyecharts==2.0.5
PyMySQL==1.1.0
Requests==2.31.0
neo4j~=5.20.0
pip~=24.0
wheel~=0.43.0
openssl~=3.2.1
jinja2~=3.1.3
setuptools~=69.2.0
\ No newline at end of file
......@@ -3,4 +3,5 @@ from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5080, debug=True)
# app.run(host='0.0.0.0', port=5080, debug=True)
app.run(port=5080, debug=True)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment