在尝试插入之前在数据库中查找现有条目

Posted

技术标签:

【中文标题】在尝试插入之前在数据库中查找现有条目【英文标题】:Look for existing entry in database before trying to insert 【发布时间】:2016-08-09 13:45:58 【问题描述】:

我目前正在使用 Access 2013。我已经建立了一个数据库,该数据库围绕着提交工作的申请人。数据库的设置使一个人可以申请许多不同的工作,当同一个人通过我们的网站(使用 JotForms)申请工作时,它会自动更新数据库。

我有一个 Python 脚本从更新数据库的电子邮件中提取申请人提交信息。我遇到的问题是,在数据库中,我将申请人的主要电子邮件设置为“无重复”,因此不允许同一个人申请许多不同的工作,因为 Python 脚本试图在导致错误的数据库。

在我的访问表单 (VBA) 或 Python 中,如果主要电子邮件相同,我需要写什么来告诉我的数据库,仅在与人员主要电子邮件相关的表中创建一个新记录?

表格:

tblPerson_Information   tblPosition_Applied_for
Personal_ID  (PK)       Position_ID
First_Name              Position_Personal_ID (FK)
Last_Name               Date_of_Submission
Clearance_Type
Primary_Phone
Primary_email
Education_Level

【问题讨论】:

【参考方案1】:

只需在 [tblPerson_Information] 表中查找电子邮件地址:

primary_email = 'gord@example.com'  # test data

crsr = conn.cursor()    
sql = """\
SELECT Personal_ID FROM tblPerson_Information WHERE Primary_email=?
"""
crsr.execute(sql, (primary_email))
row = crsr.fetchone()
if row is not None:
    personal_id = row[0]
    print('Email found: tblPerson_Information.Personal_ID = 0'.format(personal_id))
else:
    print('Email not found in tblPerson_Information')

【讨论】:

谢谢,我会在我的脚本中试试这个,看看它是如何工作的。

以上是关于在尝试插入之前在数据库中查找现有条目的主要内容,如果未能解决你的问题,请参考以下文章

从生成的复选框将多个条目插入数据库

Doctrine ORM self ManyToOne 由于重复条目而无法插入

c# 从数据库中过滤出 NULL 行并更新现有行

当我将条目插入现有部分时,为啥我的 UITableView 会为我添加另一个部分?

如何查找数据库中日期时间条目之间经过的时间

如何在现有表的中间插入新的数据库记录?