Python实现疫苗接种管理数据库步骤详解_第1页
Python实现疫苗接种管理数据库步骤详解_第2页
Python实现疫苗接种管理数据库步骤详解_第3页
Python实现疫苗接种管理数据库步骤详解_第4页
Python实现疫苗接种管理数据库步骤详解_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Python实现疫苗接种管理数据库步骤详解目录引言一、数据库信息主要阶段二、关键代码展示1、app.py(主函数)2、mgr_update.py(更新)3、mgr_add.py(添加)4、mgr_delete.py(删除)5、mgr_selector.py(查找)三、数据库数据字典1、接种人员(person)2、生产厂家(manufacturer)3、疫苗信息(vaccine)4、接种信息(inject_info)四、运行效果

引言

那一年过年前,疫情开始爆发,对全国人民的生活和工作造成了严重的影响。但凭借着国家强盛的实力,新冠疫苗也很快的被技术人员研发出来,人们通过接种新冠疫苗来抵御新冠病毒的危害。本次通过接种新冠疫苗的这个数据统计,来设计疫苗接种数据库,存储人们接种疫苗的相关信息,并实现增删改查等基本操作以及其他的拓展功能。

国内新冠疫苗人员接种后,如果不通过数据统计到数据库,数据量之大,数据查询,数据核实,数据更改等工作会非常不方便,通过编程语言,设计疫苗接种数据库,来存储接种疫苗相关数据,能使得工作人员和接种人员的工作量大大减少,从而减少工作负担,节省时间,减少更多的财力损失,实现更好的数据管理,是一种非常高效、精确、快捷、方便的方式。

一、数据库信息

本次数据库设计一共四张表,分别为《接种人员(person)》、《生产厂家(manufacturer)》、《疫苗信息(vaccine)》、《接种信息(inject_info)》。

《接种人员》表的数据项:姓名,身份证号,生日,性别,家庭住址,联系电话,不良反应。《生产厂家》表的数据项:厂家名称,厂家编号,厂家地址,联系人,联系人电话。《疫苗信息》表的数据项:疫苗名称,疫苗编号,疫苗品种,疫苗厂家编号,生产日期,过期时间。《接种信息》表的数据项:接种编号,接种疫苗编号,疫苗品种,接种剂次,接种人姓名,接种人身份证号,接种时间,接种单位。

主要阶段

确定选题:《课程设计-疫苗接种数据库》。需求分析:《数据库数据字典》,编程语言为:python+mysql

二、关键代码展示

1、app.py(主函数)

if__name__=='__main__':

#全局变量初始化

gol._init()

##课题背景信息

#menu.course_background()

##打印小组成员信息

#menu.team_info()

#连接数据库信息

db.connect_to_db(config.db_host,config.db_user,config.db_password,config.db_name)

#跳出数据库的标志

flag=True

while(flag):

menu.main_menu()

cin=input("请输入要执行操作:")

choice=int(cin)ifcin.isdigit()elseconfig.DEFAULT_INPUT

ifchoice==0:

print("您已选择退出,感谢您的操作体验")

break

elifchoice==config.OP_TYPE_ADD:

#----------------------添加----------------------------

mgr_add.add_data()

print(config.END_OP_TEXT)

input()

elifchoice==config.OP_TYPE_DELETE:

#----------------------删除----------------------------

mgr_delete.do_delete()

print(config.END_OP_TEXT)

input()

elifchoice==config.OP_TYPE_SELECT:

#----------------------查找----------------------------

mgr_selector.do_select()

print(config.END_OP_TEXT)

input()

elifchoice==config.OP_TYPE_UPDATE:

#----------------------修改----------------------------

mgr_update.do_update()

print(config.END_OP_TEXT)

input()

else:

print("操作选项输入错误,请重新输入")

db.close_db_link()

2、mgr_update.py(更新)

defdo_update():

menu.update_menu_total()

cin=util.get_user_input(5)

ifcin==0:

return

ifcin==config.TYPE_1:

do_update_person()

ifcin==config.TYPE_2:

do_update_inject_info()

ifcin==config.TYPE_3:

do_update_vaccine()

ifcin==config.TYPE_4:

do_update_manufacturer()

defdo_update_person():

#更新接种人员表

menu.update_menu_1()

cin_update=util.get_user_input(4)

ifcin_update==0:

return

#根据身份证号更新

cert_no=input("请输入身份证号:")

table=config.table_dict[config.TYPE_1]

table_inject_info=config.table_dict[config.TYPE_2]

ifcin_update==1:

#更新姓名

new_name=input("请输入修改后的姓名:")

sql1="UPDATE%sSETname='%s'WHEREcert_no='%s';"%(table,new_name,cert_no)

sql2="UPDATE%sSETperson_name='%s'WHEREperson_cert_no='%s';"%(table_inject_info,new_name,cert_no)

db.execute_sql(sql1)

db.execute_sql(sql2)

elifcin_update==2:

#更新电话

new_phone=input("请输入修改后的接种人联系电话:")

sql1="UPDATE%sSETphone='%s'WHEREcert_no='%s';"%(table,new_phone,cert_no)

db.execute_sql(sql1)

elifcin_update==3:

#更新住址

new_address=input("请输入修改后的家庭住址:")

sql1="UPDATE%sSETaddress='%s'WHEREcert_no='%s';"%(table,new_address,cert_no)

db.execute_sql(sql1)

3、mgr_add.py(添加)

defadd_data():

#添加操作

add_menu_1()

#获取用户输入

cin=util.get_user_input(5)

ifcin==0:

return

#获取数据表列

table=config.table_dict[cin]

columns=get_table_col(table)

util.print_log("表的列信息:",columns)

field_list=[]

data_list=[]

foriincolumns:

col_name=i[0]#列名

col_type=i[1]#列类型

col_index_type=i[4]#列索引类型

col_desc=i[8]#列值

#如果是不需要录入则跳过,比如id,person_id等

if(col_nameinconfig.SKIP_FIELD_SET):

continue

util.print_log("当前列信息",i)

#输入值

ifcol_type==config.FIELD_TYPE_DATETIME:

#日期检查

a=input("请输入【%s】,例如2025-05-02:"%col_desc)

input_data_invalid=True

while(input_data_invalid):

if(util.is_valid_date(a)==True):

break

a=input("您输入日期不合法,请重新输入,例如2025-05-02:")

else:

a=input("请输入【%s】:"%col_desc)

#判断唯一关键字是否重复

ifcol_index_type=='UNI':

sql='''

SELECT1FROM%s

WHERE%s=%s

'''%(table,col_name,a)

util.print_log("查重sql:",sql)

cursor=gol.get_value('cursor')

exist_in_table=1

whileexist_in_table==1:

dup_result=cursor.execute(sql)

ifdup_result==0:

break

#如果重复则重新输入

a=input("您输入与表中信息重复,请重新输入【%s】"%col_name)

field_list.append(col_name)

data_list.append(a)

#输入完成,组装数据

field_str=",".join(field_list)

data_tuple=tuple(data_list)

#拼接数据

sql='''

INSERTINTO%s(%s)VALUES%s;

'''%(table,field_str,data_tuple)

util.print_log(sql)

cursor=gol.get_value('cursor')

cursor.execute(sql)

#提交数据

conn=gol.get_value('conn')

mit()

util.print_log("%s表成功插入数据%s"%(table,data_tuple))

return0

4、mgr_delete.py(删除)

defdo_delete():

#删除操作

menu.delete_menu_total()

#获取输入

cin=util.get_user_input(5)

ifcin==0:

return

ifcin==config.TYPE_1:

do_delete_person()

ifcin==config.TYPE_2:

do_delete_inject_info()

ifcin==config.TYPE_3:

do_delete_vaccine()

ifcin==config.TYPE_4:

do_delete_manufacturer()

defdo_delete_vaccine():

#删除疫苗信息

#打印菜单

menu.delete_menu_3()

#获取用户输入

cin=util.get_user_input(2)

ifcin==0:

return

delete_value=input("请输入具体信息:")

#获取相关表

table=config.table_dict[config.TYPE_3]

table2=config.table_dict[config.TYPE_2]

#接种编号

ifcin==1:

sql1='''

DELETEFROM%sWHEREvaccine_no='%s'

'''%(table,delete_value)

sql2='''

DELETEFROM%sWHEREvaccine_no='%s'

'''%(table2,delete_value)

db.execute_sql(sql1)

db.execute_sql(sql2)

5、mgr_selector.py(查找)

defdo_select():

#执行查询

menu.select_menu_total()

#获取输入

cin=util.get_user_input(5)

ifcin==0:

return

ifcin==config.TYPE_1:

#------------------查找接种人员相关信息----------------

do_select_person()

elifcin==config.TYPE_2:

#------------------查找接种信息-----------------------

do_select_inject_info()

elifcin==config.TYPE_3:

#------------------查找疫苗信息-----------------------

do_select_vaccine()

elifcin==config.TYPE_4:

#------------------查找生产企业相关信息-----------------------

do_select_manufacturer()

defdo_select_vaccine():

#查找疫苗信息

menu.select_menu_3()

cin=util.get_user_input(5)

ifcin==0:

return

#获取搜索数据

cin2=input("请输入搜索数据:")

table=config.table_dict[config.TYPE_3]

query_value=cin2

#结果集合

result=[]

#疫苗编号

ifcin==1:

result=db.query_by_table_field(table,'vaccine_no',query_value)

#厂家编号

ifcin==2:

result=db.query_by_table_field(table,'company_no',query_value)

#生产日期

ifcin==3:

sql='''

SELECT*FROM%sWHERE%s='%s'

'''%(table,'production_at',query_value)

cursor=gol.get_value('cursor')

cursor.execute(sql)

result=cursor.fetchall()

#过期时间

ifcin==4:

sql='''

SELECT*FROM%sWHERE%s='%s'

'''%(table,'expired_at',query_value)

cursor=gol.get_value('cursor')

cursor.execute(sql)

result=cursor.fetchall()

show_select_vaccine_result(result)

三、数据库数据字典

1、接种人员(person)

字段名字段标题字段类型默认字段备注idIDint无IDname姓名varchar(32)无姓名cert_no身份证号varchar(32)无身份证号birthday生日datetime无生日gender性别vtinyint(1)无性别address家庭住址varchar(128)无家庭住址phone电话varchar(16)无电话adverse_effect不良反应varchar(64)无不良反应

2、生产厂家(manufacturer)

字段名字段标题字段类型默认字段备注idIDint无IDname厂家名称varchar(255)无厂家名称company_no厂家编号varchar(32)无厂家编号address厂家地址varchar(255)无厂家地址

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论