【发布时间】:2020-08-04 23:34:02
【问题描述】:
有没有一种方法可以将 try/except 逻辑应用于多个类定义,而无需在每个定义中都使用 try/except?
例如,而不是:
def test_table(tablename):
return Table(tablename, db.metadata, Column('id', Integer, primary_key=True))
class User(db.Model):
try:
__table__ = db.metadata.tables['user']
__bind_key__ = 'secondary'
# More attrs...
except KeyError:
__table__ = test_table('user')
class Policy(db.Model):
try:
__table__ = db.metadata.tables['policy']
__bind_key__ = 'secondary'
# More attrs...
except KeyError:
__table__ = test_table('policy')
我可以使用如下装饰器来应用逻辑:
@if_no_metadata_use_default('user')
class User(db.Model):
__table__ = db.metadata.tables['user']
__bind_key__ = 'secondary'
# More attrs...
@if_no_metadata_use_default('policy')
class Policy(db.Model):
__table__ = db.metadata.tables['policy']
__bind_key__ = 'secondary'
# More attrs...
【问题讨论】:
标签: python flask sqlalchemy flask-sqlalchemy python-decorators