在线问诊 Python、FastAPI、Neo4j — 创建节点

Neo4j 节点的标签可以理解为 Java 中的实体。

根据常规流程:首先有什么症状,做哪些对应的检查,根据检查诊断什么疾病,需要用什么药物治疗,服药期间要注意哪些饮食,需要做哪些运行

在线问诊大概创建:症状、检查项目、疾病、药品、饮食、运动 这几个对象

前提条件

基于 Python FastAPI 获取 Neo4j 数据 :https://www.cnblogs.com/vipsoft/p/17687070.html

创建节点 Demo

通过 这个Demo 理解 Neo4j Driver for Python ,创建节点

test_create_node.py

import logging
from utils.neo4j_provider import driver logging.root.setLevel(logging.INFO) ''' 创建知识图谱实体节点类型schema ''' def create_drug(tx, name):
query = (
"CREATE (n:Drug {name: $name})"
"RETURN id(n)"
)
result = tx.run(query, name=name)
return result.single()[0] if __name__ == "__main__":
with driver.session() as session:
session.execute_write(create_drug, "扶他林")
driver.close()
logging.info("创建成功")

验证

# 查看创建后的结果
MATCH (n:Drug) WHERE n.name="扶他林" RETURN n
# 删除节点
MATCH (n:Drug) WHERE n.name="扶他林" DELETE n

准备数据

采用 CSV 格式,CSV 是一种纯文本形式保存数据,好处可以记事本打开预览,也可用 excel 打开,将来数据来源都过爬虫或者NLP处理,比处理Excel要方便得多

Excel编辑 CSV 就乱码了,不知道为啥

创建药品标签节点

创建药品标签节点

build_drugs.py

import logging
import csv
from utils.neo4j_provider import driver logging.root.setLevel(logging.INFO) # 从CSV 中读取数据,并生成 CQL
def generate_cql() -> str:
with open('drugs_data.csv', 'r', encoding='utf-8') as csv_file:
csv_reader = csv.DictReader(csv_file)
cql = ""
for idx, row in enumerate(csv_reader):
cql += """(drug%s:Drug {name: "%s",generic_name: "%s",english_name: "%s",indications: "%s",contraindications: "%s",adverse_reactions: "%s",toxicology: "%s",attention: "%s",usage_dosage: "%s",images_url: "%s"}),\r\n""" \
% (idx, row['商品名'], row['通用名'], row['英文名称'], row['适应症'], row['禁忌'], row['不良反应'], row['药理毒理'], row['注意事项'], row['用法用量'], row['图片地址']) return "CREATE %s" % (cql.rstrip(",\r\n"))
data = [row for row in csv_reader] # 执行写的命令
def execute_write(cql):
with driver.session() as session:
session.execute_write(execute_cql, cql)
driver.close() # 执行 CQL 语句
def execute_cql(tx, cql):
tx.run(cql) # 清除 Drug 标签数据
def clear_data():
cql = "MATCH (n:Drug) DETACH DELETE n"
execute_write(cql) if __name__ == "__main__":
clear_data()
cql = generate_cql()
print(cql)
execute_write(cql)

在线问诊 Python、FastAPI、Neo4j — 创建药品节点的更多相关文章

  1. Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目

    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目 新建一个maven工程,这里不赘述如何新建maven工程. 添加Neo4j jar到你的工程 有两种方 ...

  2. js动态创建style节点(js文件中添加css)

    ie6 不能 document.createElement('style') 然后append到head标签里.所以就找到这样个好文章 --------------------- 有很多提供动态创建 ...

  3. devtmpfs文件系统创建设备节点

    分类: LINUX 原文地址:devtmpfs文件系统创建设备节点 作者:wangbaolin719 http://blog.chinaunix.net/uid-27097876-id-4334356 ...

  4. linux中创建gpio节点

    转自:http://blog.chinaunix.net/uid-29165999-id-4296162.html #define GPIO_MAJOR 230 // major device NO. ...

  5. python 读写、创建 文件

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

  6. Labview中创建属性节点和调用节点的用法

    创建属性节点 个人感觉有点像C中的指针 创建调用节点

  7. Javascript进阶篇——(DOM—节点---插入、删除和替换元素、创建元素、创建文本节点)—笔记整理

    插入节点appendChild()在指定节点的最后一个子节点列表之后添加一个新的子节点.语法: appendChild(newnode) //参数: //newnode:指定追加的节点. 为ul添加一 ...

  8. Linux设备驱动实现自己主动创建设备节点

    #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #inclu ...

  9. Javascript动态创建 style 节点

    有很多提供动态创建 style 节点的方法,但是大多数都仅限于外部的 css 文件.如何能使用程序生成的字符串动态创建 style 节点,我搞了2个小时. 静态外部 css 文件语法: @import ...

  10. 使用Python Shapefile Library创建和编辑Shapefile文件

    介绍 shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Feature Classes),主要包括点(point).线(polyline)和多边形(polygon).P ...

随机推荐

  1. postgresql 安装和配置

    ### 安装过程 \1. 下载Postgresql源码包: \# wget http://ftp.postgresql.org/pub/source/v9.4.3/postgresql-9.4.3.t ...

  2. v8 setup

    记录下笔者本人搭建v8环境的过程 环境:处于一些原因笔者选择在kali2023上搭建v8,kali上可以搭建成功但是调试脚本加载有问题,fuck kali,还是ubuntu好,笔者使用了ubuntu2 ...

  3. malloc/free 与 new/delete

    malloc/free与new/delete表达式的区别?相同点: 都是用来申请堆空间不同点: 1. malloc/free是库函数; new/delete是表达式 2. malloc开空间时,并不会 ...

  4. C++容器(vector、deque、list、map)

    (1) vector:将元素置于一个动态数组中,可以随机存储元素(也就是用索引直接存取). 数组尾部添加或删除元素非常迅速.但在中部或头部就比较费时. *代码演示:* 取: at在下标越界时会抛出异常 ...

  5. iOS select标签适配去掉iOS默认select样式

    iOS端对select标签有独特的适配,如何取消这些默认样式呢 css样式表 加上 1 select { 2 -webkit-appearance: none; 3 } 博客同步更新:地址

  6. 详解RISC v中断

    声明 本文为本人原创,未经许可严禁转载.部分图源自网络,如有侵权,联系删除. RISC-V 中断与异常 trap(陷阱)可以分为异常与中断.在 RISC v 下,中断有三种来源:software in ...

  7. you-get的使用

    转载自: 利用Python下载:You-Get的安装及使用方法 - 宁佳兵 - 博客园   宁佳兵 所谓的光辉岁月,并不是后来闪耀的日子,而是无人问津时,对梦想的偏执. 博客园 首页 标签 GitHu ...

  8. docker 公有仓库与私有仓库常见操作

    本文为博主原创,转载请注明出处: 自建一个Docker仓库,可以使用Docker官方提供的开源项目Docker Registry.以下是一些基本步骤: 安装Docker Registry: 在服务器上 ...

  9. MySQL中如何定位阻塞语句

    数据库中阻塞语句的查询和分析 前言 MySQL 1.使用 show processlist 查询正在运行的进程 2.使用 INNODB_TRX 查询当前运行的事务 3.使用 INNODB_LOCKS ...

  10. 缕析条分Scroll属性

    最近有项目需要使用js原生开发滑动组件,频繁要用到dom元素的各种属性,其中以各种类型的height和top属性居多,名字相近,含义也很容易搞混.因此特地总结归纳了一下常用的知识点,在文末我们来挑战实 ...