因为研究需要对已采集的医案进行结构化处理并进行校对,故开发此网站,下面简单记录思路和一些步骤,以免后期忘记。
1 需求分析设计
有三个表,在设计的word文档上。
2 构建Django项目
3 创建App
在项目下创建一个case_check的app,用命令创建。
首先进入项目目录并启动虚拟目录,如图所示。
然后,用下面命令创建app:python manage.py startapp case_check
得到下图红色区域所示结构的app。
4 编写models
下面是原始医案的model
class OriginCase(models.Model):
content = models.TextField(verbose_name="医案内容")
prescription = models.CharField(max_length=255, verbose_name="处方(方剂名称)")
herbs = models.TextField(verbose_name="处方对应的中药集合")
syndrome = models.CharField(max_length=50, verbose_name="诊断的证型")
symptoms = models.CharField(max_length=1024, verbose_name="症状集合")
symptom_elements = models.CharField(max_length=1024, verbose_name="证素集合")
source = models.CharField(max_length=100, verbose_name="来源于哪一本书或网站")
doctor = models.CharField(max_length=100, verbose_name="开处方的医生名字")
date = models.DateTimeField(auto_now_add=True, verbose_name="医案录入时间")
check_flag = models.CharField(max_length=10, verbose_name="是否已经安排校对,也就是此医案是否已经进入到checcase表中")
5 数据迁移
5.1 创建迁移文件
完了之后,需要创建迁移文件(migration)。
在命令行执行命令(要注意:case_check是刚刚创建的app,需要把这个带上,不然会提示:No changes detected):
python manage.py makemigrations case_check
这时候报错:No installed app with label 'case_check'.
分析原因是app没有在settings.py文件中配置上去。
打开settings.py文件,在INSTALLED_APPS列表中加入刚刚创建的case_check这个app,如下图红色框中部分:
再次在命令行中执行python manage.py makemigrations case_check,如下提示表示迁移文件创建成功:
(venv4network) D:\mypython\TCMWeb>python manage.py makemigrations case_check
Migrations for 'case_check':
case_check\migrations\0001_initial.py
- Create model OriginCase
5.2 执行数据迁移
前面步骤中创建好数据迁移文件之后,开始执行数据迁移,数据迁移完成之后,就会在数据库中创建对应的表。
首先,需要在setting.py中配置数据库连接信息,默认情况下Django用的是SQLlite,本项目用的MySQL,所以需要重新配置。配置代码如下:
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
'default':
{
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'tcm', # 数据库名称
'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1
'PORT': 3306, # 端口
'USER': 'root', # 数据库用户名
'PASSWORD': '你的面目', # 数据库密码
}
}
第二步,在配置好数据库之后,就开始执行迁移命令:python manage.py migrate
正常情况下显示如下:
(venv4network) D:\mypython\TCMWeb>python manage.py migrate
Operations to perform:
Apply all migrations: admin, app1, auth, case_check, contenttypes, sessions
Running migrations:
Applying case_check.0001_initial... OK
此时,打开MySQL数据库,能够看到已经创建了你的表,不过需要注意的是,为了防止整个项目中出现同名的model而导致数据库表相同的情况,在数据库表名前自动给加上了app的名字。