No, it won't automatically update if you change key names, subtable structures, etc. It will just make sure that any keys/subtables you add to your defaults also get added to the user's DB. If you want to rename keys, and you want to preserve the user's existing values, you have to do that yourself. There is no "standard pattern" for doing this, as there's no way to standardize "self.db.foo was renamed self.db.blabla.foo" etc.
However, rather than "version sniffing" you should just use "feature detection" -- eg. if you moved self.db.foo to self.db.blabla.foo, then after you initialize your DB, check if there's a value at self.db.foo and, if so, move it to self.db.blabla.foo. If you changed a bunch of keys at once, you only need to check for one of the changes.