title: What is the difference between the declarative_base() and db.Model?
body: <p>The <a href="http://pythonhosted.org/Flask-SQLAlchemy/quickstart.html" rel="noreferrer">quickstart tutorial</a> for the Flask-SQLAlchemy plugin instructs users to create table models inheriting the <code>db.Model</code> class, e.g.</p>
  
  <pre><code>app = Flask(__main__)
  db = SQLAlchemy(app)
  class Users(db.Model):
      __tablename__ = 'users'
      ...
  </code></pre>
  
  <p>However, the <a href="http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html" rel="noreferrer">SQLAlchemy tutorial</a> and the bottle-SQLAlchemy <a href="https://github.com/iurisilvio/bottle-sqlalchemy" rel="noreferrer">README</a> both suggest that table models inherit a <code>Base</code> instantiated from <code>declarative_base()</code>.</p>
  
  <pre><code>Base = declarative_base()
  class Users(Base):
      __tablename__ = 'users'
      ...
  </code></pre>
  
  <p>What is the difference between these two approaches?</p>