diff --git a/rocksdb/_rocksdb.pyx b/rocksdb/_rocksdb.pyx
index 46e0d66d3f66193d21530012629b6bfca44c9874..4d8cf4103cf084eb1b894eb470f0aa4a9379f08b 100644
--- a/rocksdb/_rocksdb.pyx
+++ b/rocksdb/_rocksdb.pyx
@@ -1729,13 +1729,11 @@ cdef class DB(object):
         self.opts = opts
         self.opts.in_use = True
 
-    def __dealloc__(self):
-        self.close()
-
     def close(self, safe=True):
         cdef ColumnFamilyOptions copts
         cdef cpp_bool c_safe = safe
-        if hasattr(self, "db"):
+        cdef Status st
+        if self.db != NULL:
             # We need stop backround compactions
             with nogil:
                 db.CancelAllBackgroundWork(self.db, c_safe)
@@ -1746,15 +1744,14 @@ cdef class DB(object):
                 if copts:
                     copts.in_use = False
             del self.cf_options[:]
-
             with nogil:
                 st = self.db.Close()
-                del self.db
-
+                self.db = NULL
             if self.opts is not None:
                 self.opts.in_use = False
 
-            check_status(st)
+    def __dealloc__(self):
+        self.close()
 
     @property
     def column_families(self):