python - 如何部分回滚?
问题描述
我目前从第三方 API 填充数据库,该 API 涉及下载包含多个 SQL INSERT
//语句的文件DELETE
,UPDATE
然后将它们解析为 SQLAlchemy ORM 对象以加载到我的数据库中。
这些文件通常可能包含我尝试在某些完整性检查中构建的错误。我目前正在努力解决的特定问题是重复记录 - 基本上是接收一个文件以插入当前存在的记录。为了避免这种情况,我在形成复合主键的字段上放置了一个唯一索引。但是,这意味着在使用 SQL 语句处理文件时出现错误,该语句尝试复制记录并且随后发出flush
or 。commit
在处理给定文件的所有 SQL 语句之前,我不想将记录提交到数据库,这样我就可以跟踪已处理的内容。我在想我可以在每条语句的处理结束时发出 a flush
,然后如果由于重复记录而失败,则可以进行一些错误处理。这将包括绕过违规声明。但是,据我了解,当我只想跳过重复的语句时,发出 a的文档将取消之前已处理的所有语句。rollback
是否可以选择以某种方式部分回滚,或者我是否需要预先构建一个查询数据库以检查执行 SQL 语句是否会创建重复记录?
解决方案
推荐阅读
- java - Android:listView 和 getView-Method 的问题
- python-2.7 - 如何在python中自动将今天的日期作为整数获取
- algorithm - 为什么从范围树查询中获得的子树的数量是 O(log(n))?
- kotlin - 使用 Kotlin 按字母对数组进行排序
- javascript - Javascript - concat() 的作用类似于 push()
- c++ - 使用 C++ Stream API 发生访问冲突异常
- php - 我的 laravel 路由返回 404 错误但路由存在?
- java - 使用 spring-data-rest 返回所有结果
- swift - 在全局监视器中访问触摸事件会引发错误
- gis - QGIS:读取 GeoTIFF 文件