从某些程序导入数据时确保表中记录的唯一性

时间:2016-07-01 17:51:38

标签: python database

抽象问题:将记录(=表格行)从某些程序导入数据库时​​,我有时只想导入记录当且仅当记录不存在时在数据库中,基于一些唯一标识符。它更可取:

  • 首先查询数据库以检查数据库中是否已存在具有相同标识符的记录,如果没有,则插入记录,
  • 添加一些unicity constraint in the database,然后尝试插入记录,周围有一些try ... catch

具体示例:我有一个包含用户列表的数据文件。对于每个用户,我有first namelast name。我假设两个人可能没有相同的名字。我想编写一个Python脚本,将数据插入PostgreSQL表中,其列为userid(自动递增的主键),first_name(文本)和last_name(文本)

我想插入用户John Doe。它更可取:

  • 首先查询数据库以检查数据库中是否已存在具有相同记录的记录,如果没有,则插入记录,例如:

    sql = "SELECT COUNT(*) cnt FROM users WHERE first_name = 'John' AND last_name`= 'Doe'"
    data = pd.read_sql_query(sql, connection)
    if data['cnt'][0]==0:
        sql = "INSERT INTO users (first_name, last_name) values ('John','Doe')"
        cursor.execute(sql)
        connection.commit()
    
  • 添加一些unicity constraint in the database(在(first_name, last_name)上),然后尝试插入记录,被一些try … catch包围,例如&#34 ;

    try:
        sql = "INSERT INTO users (first_name, last_name) values ('John','Doe')"
        cursor.execute(sql)
        connection.commit()
    except:
        print('The user is already present in database')
    

0 个答案:

没有答案