最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)查詢,數(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)廠家(manufacturer)》、《疫苗信息(vaccine)》、《接種信息(inject_info)》。

  • 《接種人員》表的數(shù)據(jù)項(xiàng):姓名,身份證號(hào),生日,性別,家庭住址,聯(lián)系電話,不良反應(yīng)。
  • 《生產(chǎn)廠家》表的數(shù)據(jù)項(xiàng):廠家名稱,廠家編號(hào),廠家地址,聯(lián)系人,聯(lián)系人電話。
  • 《疫苗信息》表的數(shù)據(jù)項(xiàng):疫苗名稱,疫苗編號(hào),疫苗品種,疫苗廠家編號(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:
        # 更新電話
        new_phone = input("請(qǐng)輸入修改后的接種人聯(lián)系電話:")
        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()
    # 獲取用戶輸入
    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]     # 列類型
        col_index_type = i[4]     # 列索引類型
        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()
    # 獲取用戶輸入
    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í)行查詢
    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)
    # 廠家編號(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)題字段類型默認(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電話varchar(16)無(wú)電話
adverse_effect不良反應(yīng)varchar(64)無(wú)不良反應(yīng)

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

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

3、疫苗信息(vaccine)

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

4、接種信息(inject_info)

字段名字段標(biāo)題字段類型默認(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、查詢操作

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)文章

  • python實(shí)現(xiàn)超級(jí)馬里奧

    python實(shí)現(xiàn)超級(jí)馬里奧

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)超級(jí)馬里奧,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 吳恩達(dá)機(jī)器學(xué)習(xí)練習(xí):SVM支持向量機(jī)

    吳恩達(dá)機(jī)器學(xué)習(xí)練習(xí):SVM支持向量機(jī)

    這篇文章主要為我們帶來(lái)了吳恩達(dá)機(jī)器學(xué)習(xí)的一個(gè)練習(xí):SVM支持向量機(jī),通過(guò)本次練習(xí)相信你能對(duì)機(jī)器學(xué)習(xí)深入更進(jìn)一步,需要的朋友可以參考下
    2021-04-04
  • Python 操作 MySQL數(shù)據(jù)庫(kù)

    Python 操作 MySQL數(shù)據(jù)庫(kù)

    這篇文章主要介紹了Python 如何操作 MySQL,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • Python drop方法刪除列之inplace參數(shù)實(shí)例

    Python drop方法刪除列之inplace參數(shù)實(shí)例

    這篇文章主要介紹了Python drop方法刪除列之inplace參數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python如何使用標(biāo)準(zhǔn)庫(kù)tmpfile庫(kù)創(chuàng)建臨時(shí)文件

    Python如何使用標(biāo)準(zhǔn)庫(kù)tmpfile庫(kù)創(chuàng)建臨時(shí)文件

    這篇文章主要介紹了Python如何使用標(biāo)準(zhǔn)庫(kù)tmpfile庫(kù)創(chuàng)建臨時(shí)文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python3使用PIL添加中文文本水印背景方法詳解

    python3使用PIL添加中文文本水印背景方法詳解

    這篇文章主要介紹了python3使用PIL添加中文文本水印背景方法詳解的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • python PyQt5中單行文本輸入控件QLineEdit用法詳解

    python PyQt5中單行文本輸入控件QLineEdit用法詳解

    在PyQt5的GUI編程中,QLineEdit控件是一個(gè)用于輸入和編輯單行文本的部件,它提供了豐富的功能和靈活性,可以輕松地實(shí)現(xiàn)用戶輸入的捕獲、驗(yàn)證和格式化等功能,本文將通過(guò)實(shí)際案例詳細(xì)介紹QLineEdit控件的常用方法,需要的朋友可以參考下
    2024-08-08
  • 使用Python繪制可愛(ài)的招財(cái)貓

    使用Python繪制可愛(ài)的招財(cái)貓

    招財(cái)貓,也被稱為“幸運(yùn)貓”,是一種象征財(cái)富和好運(yùn)的吉祥物,經(jīng)常出現(xiàn)在亞洲文化的商店、餐廳和家庭中,今天,我將帶你用 Python 和 matplotlib 庫(kù)從零開(kāi)始繪制一只可愛(ài)的卡通招財(cái)貓,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2025-01-01
  • PyCharm2020.1.1與Python3.7.7的安裝教程圖文詳解

    PyCharm2020.1.1與Python3.7.7的安裝教程圖文詳解

    這篇文章主要介紹了PyCharm2020.1.1與Python3.7.7的安裝教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python中的四種交換數(shù)值的方法解析

    Python中的四種交換數(shù)值的方法解析

    這篇文章主要介紹了Python中的四種交換數(shù)值的方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論

平山县| 新宾| 祥云县| 巴南区| 繁峙县| 平山县| 名山县| 福清市| 榆中县| 广丰县| 元谋县| 舒城县| 汪清县| 台南县| 建德市| 佛冈县| 南和县| 辽阳县| 固原市| 普兰店市| 拉萨市| 惠来县| 钟山县| 灵丘县| 阜南县| 石河子市| 海林市| 河池市| 梅州市| 鹤山市| 陇川县| 阳春市| 丽江市| 甘洛县| 资源县| 宜春市| 大余县| 嵊泗县| 赤峰市| 台南县| 西华县|