Если я вас правильно понимаю, вы спрашиваете о разнице между таблицей ассоциаций
UserBranches = db.Table(
'user_branches',
db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True),
db.Column('branch_id', db.Integer, db.ForeignKey('branch.id'), primary_key=True)
)
и таблицей сопоставления
class UserBranch(db.Model):
id = db.Column(db.Integer, primary_key=True)
user = db.relationship("User", backref=db.backref("UBMuser", lazy="dynamic"))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
branch = db.relationship("Branch", backref=db.backref("UBMbranch", lazy="dynamic"))
branch_id = db.Column(db.Integer, db.ForeignKey('branch.id'))
На уровне базы данных нет реальная разница между ними. Если вы хотите иметь строгое отношение «многие ко многим» между двумя таблицами, просто используйте таблицу ассоциаций. Благодаря SQLAlchemy вам никогда не придется ничего с ним делать, потому что присоединение через эту таблицу происходит автоматически, как только вы присоединяете пользователей к ветвям или наоборот.
Однако, если вы хотите сделать больше, например если он действительно обозначает связь, тогда таблица сопоставления, как вы написали, соответствует go, потому что она ведет себя точно так же, как обычная таблица. Это означает, что вы можете использовать его как UserBranch.created_at
или даже запрашивать его напрямую, если хотите.