当向数据库中添加记录时,如何创建一个循环来检查我们所添加的记录以前是否存在,如果不存在则检查下一条记录,如果不存在则添加它?我在数据库中有一个表,该表中有一个链接结构,我希望对该链接列执行此操作。因为链接可以被拉取多次。链接中有一个id,我认为身份证可以比较以及。完整的链接也是可比的。我会很高兴,如果你的帮助。我可以添加到这一部分,我分享一个想法的代码。
if (link == ""):
control = "false"
else:
control = "true"
if control == "true":
mySql_insert_query = "INSERT INTO ad_l(id,count,clist_id,brand_model,ad,created_at,updated_at,status) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)"
val = (id, count, clist_id, brand_model, ad_link, link, created_at, updated_at, status)
#cursor = scrap_db.cursor()
cursor.execute(mySql_insert_query, val) # cursor.executemany(mySql_insert_query, tuple_of_tuples)
scrap_db.commit()
print(cursor.rowcount, "Record inserted successfully into *ad_l* table")
我添加了这样的东西,但它没有工作。
if exists ("SELECT ad FROM ad_l WHERE AD = ad_link"):
print('There is the same link, it is not added')
pass
else:
print('New record being added')
1条答案
按热度按时间crcmnpdw1#
IMO这将是更好的解决在数据库水平作为
unique
列或unique constraint
(唯一的多列)。数据库经过优化,可以为您执行此检查,从而提高性能。
在某些情况下,可以使用DB触发器根据记录是否已存在来自动执行用户插入或更新。
在python中,你可以使用SQLAlchemy,但是它对初学者不太友好。
如果您需要从其他Angular 执行此操作,并在启动一些链接处理(废弃)之前检查DB中的记录,您正朝着正确的方向检查现有记录,但问题是,您的查询中的
ad_link
本应是一个变量,但您将其作为查询的一部分传递。例如,将其更改为:
如果需要,在
{ad_link}
周围添加'
(我目前不记得是否需要)