欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫(kù)步驟詳解

 更新時(shí)間:2022年09月08日 15:01:30   作者:編程嗎  
這篇文章主要為大家介紹了Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫(kù)步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

那一年過(guò)年前,疫情開(kāi)始爆發(fā),對(duì)全國(guó)人民的生活和工作造成了嚴(yán)重的影響。但憑借著國(guó)家強(qiáng)盛的實(shí)力,新冠疫苗也很快的被技術(shù)人員研發(fā)出來(lái),人們通過(guò)接種新冠疫苗來(lái)抵御新冠病毒的危害。本次通過(guò)接種新冠疫苗的這個(gè)數(shù)據(jù)統(tǒng)計(jì),來(lái)設(shè)計(jì)“疫苗接種數(shù)據(jù)庫(kù)”,存儲(chǔ)人們接種疫苗的相關(guān)信息,并實(shí)現(xiàn)“增刪改查”等基本操作以及其他的拓展功能。

國(guó)內(nèi)新冠疫苗人員接種后,如果不通過(guò)數(shù)據(jù)統(tǒng)計(jì)到數(shù)據(jù)庫(kù),數(shù)據(jù)量之大,數(shù)據(jù)查詢(xún),數(shù)據(jù)核實(shí),數(shù)據(jù)更改等工作會(huì)非常不方便,通過(guò)編程語(yǔ)言,設(shè)計(jì)疫苗接種數(shù)據(jù)庫(kù),來(lái)存儲(chǔ)接種疫苗相關(guān)數(shù)據(jù),能使得工作人員和接種人員的工作量大大減少,從而減少工作負(fù)擔(dān),節(jié)省時(shí)間,減少更多的財(cái)力損失,實(shí)現(xiàn)更好的數(shù)據(jù)管理,是一種非常高效、精確、快捷、方便的方式。

一、數(shù)據(jù)庫(kù)信息

本次數(shù)據(jù)庫(kù)設(shè)計(jì)一共四張表,分別為《接種人員(person)》、《生產(chǎn)廠(chǎng)家(manufacturer)》、《疫苗信息(vaccine)》、《接種信息(inject_info)》。

  • 《接種人員》表的數(shù)據(jù)項(xiàng):姓名,身份證號(hào),生日,性別,家庭住址,聯(lián)系電話(huà),不良反應(yīng)。
  • 《生產(chǎn)廠(chǎng)家》表的數(shù)據(jù)項(xiàng):廠(chǎng)家名稱(chēng),廠(chǎng)家編號(hào),廠(chǎng)家地址,聯(lián)系人,聯(lián)系人電話(huà)。
  • 《疫苗信息》表的數(shù)據(jù)項(xiàng):疫苗名稱(chēng),疫苗編號(hào),疫苗品種,疫苗廠(chǎng)家編號(hào),生產(chǎn)日期,過(guò)期時(shí)間。
  • 《接種信息》表的數(shù)據(jù)項(xiàng):接種編號(hào),接種疫苗編號(hào),疫苗品種,接種劑次,接種人姓名,接種人身份證號(hào),接種時(shí)間,接種單位。

主要階段

  • 確定選題:《課程設(shè)計(jì)-疫苗接種數(shù)據(jù)庫(kù)》。
  • 需求分析:《數(shù)據(jù)庫(kù)數(shù)據(jù)字典》,編程語(yǔ)言為:python + mysql

二、關(guān)鍵代碼展示

1、app.py(主函數(shù))

if __name__ == '__main__':
    # 全局變量初始化
    gol._init()
    # # 課題背景信息
    # menu.course_background()
    #
    # # 打印小組成員信息
    # menu.team_info()
    # 連接數(shù)據(jù)庫(kù)信息
    db.connect_to_db(config.db_host, config.db_user, config.db_password, config.db_name)
    # 跳出數(shù)據(jù)庫(kù)的標(biāo)志 
    flag = True
    while (flag):
        menu.main_menu()
        cin = input("請(qǐng)輸入要執(zhí)行操作:")
        choice = int(cin) if cin.isdigit() else config.DEFAULT_INPUT
        if choice == 0:
            print("您已選擇退出,感謝您的操作體驗(yàn)")
            break
        elif choice == config.OP_TYPE_ADD:
            # ----------------------添加----------------------------
            mgr_add.add_data()
            print(config.END_OP_TEXT)
            input()
        elif choice == config.OP_TYPE_DELETE:
            # ----------------------刪除----------------------------
            mgr_delete.do_delete()
            print(config.END_OP_TEXT)
            input()
        elif choice == config.OP_TYPE_SELECT:
            # ----------------------查找----------------------------
            mgr_selector.do_select()
            print(config.END_OP_TEXT)
            input()
        elif choice == config.OP_TYPE_UPDATE:
            # ----------------------修改----------------------------
            mgr_update.do_update()
            print(config.END_OP_TEXT)
            input()
        else:
            print("操作選項(xiàng)輸入錯(cuò)誤,請(qǐng)重新輸入")
    db.close_db_link()

2、mgr_update.py(更新)

def do_update():
    menu.update_menu_total()
    cin = util.get_user_input(5)
    if cin == 0:
        return
    if cin == config.TYPE_1:
        do_update_person()
    if cin == config.TYPE_2:
        do_update_inject_info()
    if cin == config.TYPE_3:
        do_update_vaccine()
    if cin == config.TYPE_4:
        do_update_manufacturer()
def do_update_person():
    # 更新接種人員表
    menu.update_menu_1()
    cin_update = util.get_user_input(4)
    if cin_update == 0:
        return
    # 根據(jù)身份證號(hào)更新
    cert_no = input("請(qǐng)輸入身份證號(hào):")
    table = config.table_dict[config.TYPE_1]
    table_inject_info = config.table_dict[config.TYPE_2]
    if cin_update == 1:
        # 更新姓名
        new_name = input("請(qǐng)輸入修改后的姓名:")
        sql1 = "UPDATE %s SET name='%s' WHERE cert_no='%s';" % (table, new_name, cert_no)
        sql2 = "UPDATE %s SET person_name='%s' WHERE person_cert_no='%s';" % (table_inject_info, new_name, cert_no)
        db.execute_sql(sql1)
        db.execute_sql(sql2)
    elif cin_update == 2:
        # 更新電話(huà)
        new_phone = input("請(qǐng)輸入修改后的接種人聯(lián)系電話(huà):")
        sql1 = "UPDATE %s SET phone='%s' WHERE cert_no='%s';" % (table, new_phone, cert_no)
        db.execute_sql(sql1)
    elif cin_update == 3:
        # 更新住址
        new_address = input("請(qǐng)輸入修改后的家庭住址:")
        sql1 = "UPDATE %s SET address='%s' WHERE cert_no='%s';" % (table, new_address, cert_no)
        db.execute_sql(sql1)

3、mgr_add.py(添加)

def add_data():
    # 添加操作
    add_menu_1()
    # 獲取用戶(hù)輸入
    cin = util.get_user_input(5)
    if cin == 0:
        return
    # 獲取數(shù)據(jù)表列
    table = config.table_dict[cin]
    columns = get_table_col(table)
    util.print_log("表的列信息: ",  columns)
    field_list = []
    data_list = []
    for i in columns:
        col_name = i[0]     # 列名
        col_type = i[1]     # 列類(lèi)型
        col_index_type = i[4]     # 列索引類(lèi)型
        col_desc = i[8]     # 列值
        # 如果是不需要錄入則跳過(guò), 比如 id,person_id 等
        if(col_name in config.SKIP_FIELD_SET):
            continue
        util.print_log("當(dāng)前列信息", i)
        # 輸入值
        if col_type == config.FIELD_TYPE_DATETIME:
            # 日期檢查
            a = input("請(qǐng)輸入【%s】, 例如 2022-05-02 : " % col_desc)
            input_data_invalid = True
            while(input_data_invalid):
                if(util.is_valid_date(a) == True):
                    break
                a = input("您輸入日期不合法,請(qǐng)重新輸入,例如 2022-05-02 : ")
        else:
            a = input("請(qǐng)輸入【%s】: " % col_desc)
        # 判斷唯一關(guān)鍵字是否重復(fù)
        if col_index_type == 'UNI':
            sql = '''
                SELECT 1 FROM  %s  
                WHERE %s = %s 
            ''' % (table, col_name, a)
            util.print_log("查重 sql: ", sql)
            cursor = gol.get_value('cursor')
            exist_in_table = 1
            while exist_in_table == 1:
                dup_result = cursor.execute(sql)
                if dup_result == 0:
                    break
                # 如果重復(fù)則重新輸入
                a = input("您輸入與表中信息重復(fù),請(qǐng)重新輸入【%s】" % col_name)
        field_list.append(col_name)
        data_list.append(a)
    # 輸入完成,組裝數(shù)據(jù)
    field_str = ",".join(field_list)
    data_tuple = tuple(data_list)
    # 拼接數(shù)據(jù)
    sql = '''
        INSERT INTO %s(%s) VALUES %s;
    ''' % (table, field_str, data_tuple)
    util.print_log(sql)
    cursor = gol.get_value('cursor')
    cursor.execute(sql)
    # 提交數(shù)據(jù)
    conn = gol.get_value('conn')
    conn.commit()
    util.print_log("%s 表成功插入數(shù)據(jù) %s" % (table, data_tuple))
    return 0

4、mgr_delete.py(刪除)

def do_delete():
    # 刪除操作
    menu.delete_menu_total()
    # 獲取輸入
    cin = util.get_user_input(5)
    if cin == 0:
        return
    if cin == config.TYPE_1:
        do_delete_person()
    if cin == config.TYPE_2:
        do_delete_inject_info()
    if cin == config.TYPE_3:
        do_delete_vaccine()
    if cin == config.TYPE_4:
        do_delete_manufacturer()
def do_delete_vaccine():
    # 刪除疫苗信息
    # 打印菜單
    menu.delete_menu_3()
    # 獲取用戶(hù)輸入
    cin = util.get_user_input(2)
    if cin == 0:
        return
    delete_value = input("請(qǐng)輸入具體信息:")
    # 獲取相關(guān)表
    table = config.table_dict[config.TYPE_3]
    table2 = config.table_dict[config.TYPE_2]
    # 接種編號(hào)
    if cin == 1:
        sql1 = '''
            DELETE FROM %s WHERE vaccine_no='%s' 
            ''' % (table, delete_value)
        sql2 = '''
            DELETE FROM %s WHERE vaccine_no='%s' 
            ''' % (table2, delete_value)
        db.execute_sql(sql1)
        db.execute_sql(sql2)

5、mgr_selector.py(查找)

def do_select():
    # 執(zhí)行查詢(xún)
    menu.select_menu_total()
    # 獲取輸入
    cin = util.get_user_input(5)
    if cin == 0:
        return
    if cin == config.TYPE_1:
        # ------------------查找接種人員相關(guān)信息----------------
        do_select_person()
    elif cin == config.TYPE_2:
        # ------------------查找接種信息-----------------------
        do_select_inject_info()
    elif cin == config.TYPE_3:
        # ------------------查找疫苗信息-----------------------
        do_select_vaccine()
    elif cin == config.TYPE_4:
        # ------------------查找生產(chǎn)企業(yè)相關(guān)信息-----------------------
        do_select_manufacturer()
def do_select_vaccine():
    # 查找疫苗信息
    menu.select_menu_3()
    cin = util.get_user_input(5)
    if cin == 0:
        return
    # 獲取搜索數(shù)據(jù)
    cin2 = input("請(qǐng)輸入搜索數(shù)據(jù):")
    table = config.table_dict[config.TYPE_3]
    query_value = cin2
    # 結(jié)果集合
    result = []
    # 疫苗編號(hào)
    if cin == 1:
        result = db.query_by_table_field(table, 'vaccine_no', query_value)
    # 廠(chǎng)家編號(hào)
    if cin == 2:
        result = db.query_by_table_field(table, 'company_no', query_value)
    # 生產(chǎn)日期
    if cin == 3:
        sql = ''' 
            SELECT * FROM %s  WHERE %s >= '%s' 
            ''' % (table, 'production_at', query_value)
        cursor = gol.get_value('cursor')
        cursor.execute(sql)
        result = cursor.fetchall()
    # 過(guò)期時(shí)間
    if cin == 4:
        sql = ''' 
            SELECT * FROM %s  WHERE %s <= '%s' 
            ''' % (table, 'expired_at', query_value)
        cursor = gol.get_value('cursor')
        cursor.execute(sql)
        result = cursor.fetchall()
    show_select_vaccine_result(result)

三、數(shù)據(jù)庫(kù)數(shù)據(jù)字典

1、接種人員(person)

字段名字段標(biāo)題字段類(lèi)型默認(rèn)字段備注
idIDint無(wú)ID
name姓名varchar(32)無(wú)姓名
cert_no身份證號(hào)varchar(32)無(wú)身份證號(hào)
birthday生日datetime無(wú)生日
gender性別vtinyint(1)無(wú)性別
address家庭住址varchar(128)無(wú)家庭住址
phone電話(huà)varchar(16)無(wú)電話(huà)
adverse_effect不良反應(yīng)varchar(64)無(wú)不良反應(yīng)

2、生產(chǎn)廠(chǎng)家(manufacturer)

字段名字段標(biāo)題字段類(lèi)型默認(rèn)字段備注
idIDint無(wú)ID
name廠(chǎng)家名稱(chēng)varchar(255)無(wú)廠(chǎng)家名稱(chēng)
company_no廠(chǎng)家編號(hào)varchar(32)無(wú)廠(chǎng)家編號(hào)
address廠(chǎng)家地址varchar(255)無(wú)廠(chǎng)家地址
contact_person聯(lián)系人varchar(255)無(wú)聯(lián)系人
contact_phone聯(lián)系人電話(huà)int無(wú)聯(lián)系人電話(huà)

3、疫苗信息(vaccine)

字段名字段標(biāo)題字段類(lèi)型默認(rèn)字段備注
idIDint無(wú)ID
name疫苗名稱(chēng)varchar(64)無(wú)ID
vaccine_no疫苗編號(hào)varchar(64)無(wú)疫苗名稱(chēng)
vaccine_type疫苗品種datetime(32)無(wú)疫苗品種
company_no疫苗廠(chǎng)家編號(hào)vtinyint(32)無(wú)疫苗廠(chǎng)家編號(hào)
production_at生產(chǎn)日期datetime無(wú)生產(chǎn)日期
expired_at過(guò)期時(shí)間datetime無(wú)過(guò)期時(shí)間

4、接種信息(inject_info)

字段名字段標(biāo)題字段類(lèi)型默認(rèn)字段備注
idIDint無(wú)ID
inject_no接種編號(hào)varchar(32)無(wú)接種編號(hào)
vaccine_no接種疫苗編號(hào)varchar(32)無(wú)接種疫苗編號(hào)
vaccine_type疫苗品種varchar(32)無(wú)疫苗品種
inject_does接種劑次varchar(16)無(wú)接種劑次
person_name接種人姓名varchar(32)無(wú)接種人姓名
person_cert_no接種人身份證號(hào)varchar(32)無(wú)接種人身份證號(hào)
inject_at接種時(shí)間datetime無(wú)接種時(shí)間
inject_company接種單位varchar(128)無(wú)接種單位

四、運(yùn)行效果

1、設(shè)計(jì)背景

2、小組信息

3、主界面

4、新增操作

結(jié)果:可見(jiàn)新加的“張三”信息已成功插入。

5、刪除操作

結(jié)果:可見(jiàn)新加的“張三”信息已成功刪除。

6、查詢(xún)操作

7、修改操作

結(jié)果:鄧陽(yáng)華的家庭住址已經(jīng)被修改。

以上就是Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫(kù)步驟詳解的詳細(xì)內(nèi)容,更多關(guān)于Python疫苗接種管理數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • tensorflow 實(shí)現(xiàn)從checkpoint中獲取graph信息

    tensorflow 實(shí)現(xiàn)從checkpoint中獲取graph信息

    今天小編就為大家分享一篇tensorflow 實(shí)現(xiàn)從checkpoint中獲取graph信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python對(duì)字符串實(shí)現(xiàn)去重操作的方法示例

    Python對(duì)字符串實(shí)現(xiàn)去重操作的方法示例

    字符串去重是python中字符串操作常見(jiàn)的一個(gè)需求,最近在工作中就又遇到了,所以下面這篇文章主要給大家介紹了關(guān)于Python對(duì)字符串實(shí)現(xiàn)去重操作的相關(guān)資料,文中給出了詳細(xì)的介紹,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • 詳解Selenium中元素定位方式

    詳解Selenium中元素定位方式

    測(cè)試對(duì)象的定位和操作是我們利用 selenium 編寫(xiě)自動(dòng)化腳本和 webdriver 的核心內(nèi)容。本文我們就來(lái)學(xué)習(xí)一下常用的元素定位方法有哪些吧
    2022-06-06
  • windows下添加Python環(huán)境變量的方法匯總

    windows下添加Python環(huán)境變量的方法匯總

    默認(rèn)情況下,在windows下安裝python之后,系統(tǒng)并不會(huì)自動(dòng)添加相應(yīng)的環(huán)境變量。此時(shí)不能在命令行直接使用python命令。今天我們就來(lái)看下,如何簡(jiǎn)單快捷的在windows下添加Python環(huán)境變量
    2018-05-05
  • python使用mysql數(shù)據(jù)庫(kù)示例代碼

    python使用mysql數(shù)據(jù)庫(kù)示例代碼

    本篇文章主要介紹了python使用mysql數(shù)據(jù)庫(kù)示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Python實(shí)現(xiàn)通訊錄功能

    Python實(shí)現(xiàn)通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python代碼打印100-999之間的回文數(shù)示例

    python代碼打印100-999之間的回文數(shù)示例

    今天小編就為大家分享一篇python代碼打印100-999之間的回文數(shù)示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 淺談哪個(gè)Python庫(kù)才最適合做數(shù)據(jù)可視化

    淺談哪個(gè)Python庫(kù)才最適合做數(shù)據(jù)可視化

    數(shù)據(jù)可視化是任何探索性數(shù)據(jù)分析或報(bào)告的關(guān)鍵步驟,目前有許多非常好的商業(yè)智能工具,比如Tableau、googledatastudio和PowerBI等,本文就詳細(xì)的進(jìn)行對(duì)比,感興趣的可以了解一下
    2021-06-06
  • python練習(xí)之循環(huán)控制語(yǔ)句 break 與 continue

    python練習(xí)之循環(huán)控制語(yǔ)句 break 與 continue

    這篇文章主要介紹了python循環(huán)控制語(yǔ)句 break 與 continue,break就像是終止按鍵,不管執(zhí)行到哪一步,只要遇到break,不管什么后續(xù)步驟,直接跳出當(dāng)前循環(huán)
    2022-06-06
  • 一行Python命令實(shí)現(xiàn)批量加水印

    一行Python命令實(shí)現(xiàn)批量加水印

    工作的時(shí)候,尤其是自媒體工作者,必備水印添加工具以保護(hù)知識(shí)產(chǎn)權(quán)。本文為大家提供了一個(gè)快速加水印的方法:一行Python命令就能實(shí)現(xiàn),快來(lái)了解一下吧
    2022-04-04

最新評(píng)論