在线问诊 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. 一次 SSH 攻击与处理小记

    这是我在简书看到的一个作者经历,结合小编自己的一些实践,抛砖引玉,给大家分享一下. 有段时间发现集群异常卡顿.担心的事情终于发生了,使用命令 lastb 查看了一下,我的天呢,好多未知的 IP,我随便 ...

  2. 【Azure K8S】AKS升级 Kubernetes version 失败问题的分析与解决

    问题描述 创建Azure Kubernetes Service服务后,需要升级AKS集群的 kubernetes version.在AKS页面的 Cluster configuration 页面中,选 ...

  3. STL-deque(ACM)

    1.两段都可以插入和删除(头 插入删除 尾 插入删除) 普通队列无法用pop_back()删除队列最后的元素,类似地,由于普通队列只能插入头删除,所以push().pop()无需带_front()._ ...

  4. c++中vector容器的用法

    C语言中const关键字是constant的缩写,通常翻译为常量.常数等,它可以修饰变量.数组.指针.函数参数. vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器.ve ...

  5. 【Azure 媒体服务】Azure Media Player 在Edge浏览器中不能播放视频问题的分析与解决

    问题描述 使用Azure Media Service 制作视频点播服务,在客户端使用 Azure Media Player 播放器在 Edge 浏览器中播放视频时候遇见无法播放的问题: 错误信息: T ...

  6. 浅析 Jetty 中的线程优化思路

    作者:vivo 互联网服务器团队- Wang Ke 本文介绍了 Jetty 中 ManagedSelector 和 ExecutionStrategy 的设计实现,通过与原生 select 调用的对比 ...

  7. PHP站群询盘订单提交过滤系统,2018年作品

    //作者主页: https://www.bz80.vip header("Content-type: text/html; charset=utf-8"); //UTF8编码,避免 ...

  8. Word转换HTML(Java实用版)

    前言: 在业务中,如果需要在浏览器中预览Word文档,或者需要将Word文档转成HTML文件保存,那么本章内容,可以帮助到你. 实现这一功能,有多种实现方式,如:docx4j.poi.Free Spi ...

  9. XCTF-CGfsb

    考察知识点 PWN.格式化字符串漏洞 题目链接 https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&am ...

  10. 并发编程-CompletableFuture解析

    1.CompletableFuture介绍 CompletableFuture对象是JDK1.8版本新引入的类,这个类实现了两个接口,一个是Future接口,一个是CompletionStage接口. ...