我一直在学习如何使用 sqlalchemy(我还是个初学者)。我正在使用 ORM(而不是 SQLAlchemy 表达式语言)并设置了许多脚本来使用简单的方法将带时间戳的传感器数据放入数据库中
>>> session.add(query)
>>> session.commit()
方法。
有时,其中一个脚本可以获得一些实际上根本不是新的“新”数据;完全相同的数据已经被处理并添加到数据库中。
如果忽略这一点并简单地添加我得到的任何数据,我会得到一个
(IntegrityError) duplicate key value violates unique constraint
我最初通过简单地捕获异常并回滚事务来解决这个问题。但是,这会导致许多此类 IntegrityErrors 并阻塞 DB 错误日志。显然这是一个糟糕的解决方案,相反,我应该更新重复数据,或者首先检查哪些数据已经存在,然后只添加新的东西。有无数种方法可以做到这一点,但我确信有一种内置的简单有效的方法(因为这一定不是一个独特的问题)。
解决此问题的最佳方法是什么?