diff --git a/homeassistant/components/recorder/util.py b/homeassistant/components/recorder/util.py index 449f910fda9..c96cfe78dd2 100644 --- a/homeassistant/components/recorder/util.py +++ b/homeassistant/components/recorder/util.py @@ -20,12 +20,16 @@ def session_scope(*, hass=None, session=None): if session is None: raise RuntimeError('Session required') + need_rollback = False try: yield session - session.commit() + if session.transaction: + need_rollback = True + session.commit() except Exception as err: # pylint: disable=broad-except _LOGGER.error("Error executing query: %s", err) - session.rollback() + if need_rollback: + session.rollback() raise finally: session.close()