我正在用Flask和SqlAlchemy做一个项目。我和我的同事发现了两种定义表的方法。两种方法都有效,但是有什么不同呢?
可能性I
base = declarative_base()
class Story(base):
__tablename__ = 'stories'
user_id = Column(Integer, primary_key=True)
email = Column(String(100), unique=True)
password = Column(String(100), unique=True)
可能性II
db = SQLAlchemy()
class Story(db.Model):
__tablename__ = 'stories'
user_id = db.Column(Integer, primary_key=True)
email = db.Column(String(100), unique=True)
password = db.Column(String(100), unique=True)
我们想选择一个选项,但是是哪一个呢?很明显,这两个类都继承自不同的父类,但是这两种可能性用于什么呢?
1条答案
按热度按时间wrrgggsh1#
可能性1是原始SQLAlchemy声明性Map。
可能性2是Flask-SQLAlchemy。
这两种方法都以声明的方式将类Map到SQL表(或者SQL中更奇特的东西),也就是说,类被Map到自动生成的表。
然而,选择使用哪一个是一个观点问题。
我要说的是,使用Flask-SQLAlchemy显然会将应用程序锁定到Flask,但这基本上不是问题,因为切换框架非常罕见。
注意。
__tablename__
对于Flask-SQLAlchemy是可选的。