From e7f45b2a688e7eb6e731e6d8b5d14d2dad7bf1f4 Mon Sep 17 00:00:00 2001 From: Saun Shewanown Date: Wed, 27 Apr 2016 16:39:50 -0400 Subject: [PATCH] Added error check to _upsert_pre_check(), res = None when error --- dataset/persistence/table.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/dataset/persistence/table.py b/dataset/persistence/table.py index 1dd2e8c..a5c7ee3 100644 --- a/dataset/persistence/table.py +++ b/dataset/persistence/table.py @@ -183,20 +183,23 @@ class Table(object): def _upsert_pre_check(self, row, keys, ensure): # check whether keys arg is a string and format as a list - if not isinstance(keys, (list, tuple)): - keys = [keys] - self._check_dropped() + try: + if not isinstance(keys, (list, tuple)): + keys = [keys] + self._check_dropped() - ensure = self.database.ensure_schema if ensure is None else ensure - if ensure: - self.create_index(keys) + ensure = self.database.ensure_schema if ensure is None else ensure + if ensure: + self.create_index(keys) - filters = {} - for key in keys: - filters[key] = row.get(key) - - res = self.find_one(**filters) + filters = {} + for key in keys: + filters[key] = row.get(key) + res = self.find_one(**filters) + except: + res = None + return res def upsert(self, row, keys, ensure=None, types={}):