在Python中实现对MySQL数据库的表设置联合唯一约束,以及在代码中添加 异常捕获 的功能,在违反唯一性约束时,做想要额外执行的操作
什么是联合唯一约束
为两列 a,b 设置了联合唯一约束后,若某行数据的a,b两列的值与其他行的a,b两列值均相同,则违反了联合唯一约束。
如果两行数据中,只有a列的值相同,b列不同,则没有违反约束。
在Python中实现
在 MySQL中,设置 联合唯一约束的语法是:ALTER TABLE 表名 ADD UNIQUE KEY(a, b)
如果违反了唯一性约束条件,console报错信息为:
mysql.connector.errors.IntegrityError: 1062 (23000): Duplicate entry 'XXX-XXX' for key 'XXXXXX'
错误类型:mysql.connector.errors.IntegrityError
实现代码:
# 创建连接
mydb = mysql.connector.connect(user=用户名, password=密码)
# 建立游标
mycursor = mydb.cursor()
# 使用 数据库
mycursor.execute("USE 数据库名")
# 将列a与列b两列设置为联合唯一约束
mycursor.execute("ALTER TABLE 表名 ADD UNIQUE KEY(a, b)")
# 加入异常捕获功能
try:
想要执行的语句
except mysql.connector.errors.IntegrityError:
如果违反了唯一性约束,要执行的语句
# 无论如何,在结束操作时断开数据库的连接
finally:
# 关闭游标
mycursor.close()
# 关闭连接
mydb.close()