首页 > 解决方案 > 如何检查表中是否已存在特定技能,然后将该技能 ID 添加到另一个表中?

问题描述

我必须为员工门户创建一个新的 API。我有两个表emp_skills(列:id、emp_id、skill_id)和Skills_master(列:skill_id、skill_name)。

首先,我必须检查员工添加到其信息中的特定技能是否已经存在于Skills_master表中,如果存在,那么只需将该 Skill_id 添加emp_skills中。如果没有,则在技能主表中添加为新条目。

我已经完成了以下操作,我得到的错误是:

添加员工“NoneType”对象不可下标时发生异常

skill_name = req_json.skill_name
validation_query = """select count(skill_name) from skills_master where skill_name='{skill_name}'""".format(skill_name=skill_name)
output = RDBMSUtility().execute_select_query(validation_query)

if output[0][0] != 0:
    query4 = f"""select skill_id from skills_master where skill_name = '{req_json.skill_name}'"""
    output3 = RDBMSUtility().execute_query(query4, True)
    skill_id = output3[0][0]
    RDBMSUtility().update_table("emp_skills", f""" "skill_id" = '{skill_id[0]}'
                                """, f"emp_id = '{req_json.emp_id}'")

else:
    query5 = f"""insert into skills_master ("skill_name") VALUES ('{skill_name}')"""
    RDBMSUtility().execute_query(query5, False)

标签: pythonpostgresqlapirestfastapi

解决方案


您的查询结果是None并且您正在尝试将其用作list对象。

首先检查您的原始查询是否有效RDB以及结果是什么。然后检查validation_query字符串在 python 中是否正确写入,可能是简单的打印。然后使用try/except块。


推荐阅读