python 不添加相同的记录检查循环

tf7tbtn2  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(112)

当向数据库中添加记录时,如何创建一个循环来检查我们所添加的记录以前是否存在,如果不存在则检查下一条记录,如果不存在则添加它?我在数据库中有一个表,该表中有一个链接结构,我希望对该链接列执行此操作。因为链接可以被拉取多次。链接中有一个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')
crcmnpdw

crcmnpdw1#

IMO这将是更好的解决在数据库水平作为unique列或unique constraint(唯一的多列)。
数据库经过优化,可以为您执行此检查,从而提高性能。
在某些情况下,可以使用DB触发器根据记录是否已存在来自动执行用户插入或更新。
在python中,你可以使用SQLAlchemy,但是它对初学者不太友好。
如果您需要从其他Angular 执行此操作,并在启动一些链接处理(废弃)之前检查DB中的记录,您正朝着正确的方向检查现有记录,但问题是,您的查询中的ad_link本应是一个变量,但您将其作为查询的一部分传递。
例如,将其更改为:

exists (f"SELECT ad FROM ad_l WHERE AD = {ad_link}")

如果需要,在{ad_link}周围添加'(我目前不记得是否需要)

相关问题