如果 python 和 sql 不存在,则将新记录插入 table

Inserting new record into table if it doesn't exist with python and sql

我想在我的 python 脚本中插入我的 MySQL Workbench 数据库,但我在尝试让它仅在某个值已经存在时插入一次时遇到问题。所以假设我正在插入名称并且名称 'Bob' 已经在数据库中,此时我不想再次插入它。

我一直在寻找其他资源,目前正在尝试:

for account in accounts:
        sql = ("If Not Exists(SELECT * FROM Accounts WHERE Account_Name = " + str(account) + ") "
                "Begin "
                "INSERT into Accounts (Account_Name, Account_ID, Formatted_Name, Crawler_Name) VALUES (%s, %s, %s, %s) "
                "End")
        val = (account, '0', 'test', 'test')
        mycursor.execute(sql, val)
mydb.commit()

其中帐户是一些与此处无关的字符串。我基本上想将帐户插入数据库,但只有一次,如果它再次运行并找到相同的帐户,我不想重新插入副本(常规插入语句会这样做)。

我得到的错误是: “mysql.connector.errors.ProgrammingError: 1064 (42000): 你的 SQL 语法有误;请查看与你的 MySQL 服务器版本对应的手册,了解在 [=25= 附近使用的正确语法] 在第 1 行

如有任何帮助,我将不胜感激! :)

我认为您可以使用 INSERT IGNORE,它会忽略数据库会尝试抱怨 Duplicate entry 的事实。有关更多信息,请参阅 here。在 link 您可以阅读其他策略(您可能会发现更适合您的需求)