title: db.Model vs db.Table in Flask-SQLAlchemy
body: <p>The <a href="http://flask-sqlalchemy.pocoo.org/2.1/models/#many-to-many-relationships" rel="noreferrer">Flask-SQLAlchemy docs</a> say that many-to-many lookup tables should not subclass db.Model but instead be written as db.Tables. From the docs:</p>
  
  <blockquote>
    <p>If you want to use many-to-many relationships you will need to define
    a helper table that is used for the relationship. For this helper
    table it is strongly recommended to not use a model but an actual
    table</p>
  </blockquote>
  
  <p>Why? What are the downsides to making everything a model? I think it looks cleaner to have a unified way of declaring tables in the database. Also, it's possible that sometime later a developer will want to access those mapping records directly, rather than through a relationship, which would require a model.</p>