首页 > 解决方案 > 如果 python 和 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()

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

我得到的错误是:“mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'If Not Exists 附近使用的正确语法(SELECT * FROM Accounts WHERE Account_Name = DE - Kipling DE)从第 1 行开始“

我会很感激任何帮助!:)

标签: pythonmysqlsqlpython-sql

解决方案


我认为您可以使用INSERT IGNOREwhich 将忽略 DB 将尝试抱怨的事实Duplicate entry。请参阅此处了解更多信息。在链接中,您可以阅读其他策略(您可能会发现更适合您的需求)


推荐阅读