Или мы можем попробовать другой путь. Например, мы можем объявить два разных класса со всеми атрибутами экземпляра одинаковыми, но атрибут класса __bind__
отличается. Таким образом, мы можем использовать класс rw для чтения / записи и r-класса для чтения только. :)
Я думаю, что этот способ проще и надежнее. :)
Мы объявляем две модели db, потому что мы можем иметь таблицы в двух разных db с одинаковыми именами. Таким образом, мы также можем обойти ошибку «extend_existing», когда две модели с одинаковым __tablename __.
Вот пример:
app = Flask(__name__)
app.config['SQLALCHEMY_BINDS'] = {'rw': 'rw', 'r': 'r'}
db = SQLAlchemy(app)
db.Model_RW = db.make_declarative_base()
class A(db.Model):
__tablename__ = 'common'
__bind_key__ = 'r'
class A(db.Model_RW):
__tablename__ = 'common'
__bind_key__ = 'rw'