中药大数据(二)中药方剂表设计与导入
最近在做一个中药大数据的单子,已经爬取到了中药和方剂的数据,现在根据爬取到的数据设计数据库和导入neo4j形成知识图谱。
1 中药方剂数据表设计
爬取到的字段有
方剂名 title
处方 prescription
制法 making
功能主治 functional_indications
用法用量 usage
摘录 excerpt
注意事项 care
生成基于上述属性的DDL
CREATE TABLE tb_prescriptions (
id INT AUTO_INCREMENT PRIMARY KEY, -- 自增ID作为主键
title VARCHAR(100) NOT NULL, -- 方剂名
prescription TEXT, -- 处方
making TEXT, -- 制法
functional_indications TEXT, -- 功能主治
usage TEXT, -- 用法用量
excerpt TEXT, -- 摘录
care TEXT -- 注意事项
) ENGINE=InnoDB
2 导入数据库
利用pandas读取excel导入数据到数据库中。
import pandas as pd
from config import cnn
df = pd.read_excel('zhongyaofang_data.xlsx')
# 将 NaN 替换
df = df.fillna('')
try:
# 获取数据库的游标对象
with cnn.cursor() as cursor:
# 遍历 DataFrame 中的每一行,插入到数据库中
for index, row in df.iterrows():
# 构造 SQL 插入语句
sql = """
INSERT INTO tb_prescription (title, prescription, making, functional_indications,
`usage`, excerpt, care)
VALUES (%s, %s, %s, %s, %s, %s, %s)
"""
cursor.execute(sql, (
row['title'],
row['prescription'],
row['making'],
row['functional_indications'],
row['usage'],
row['excerpt'],
row['care']
))
# 提交事务
cnn.commit()
finally:
# 关闭数据库连接
cnn.close()
print("数据导入成功!")
这里需要注意usage 是保留字。
3 导入效果
执行上述代码后,利用navicat查看导入结果: