如果基类没有添加属性:__abstract__ = True
会报如下错误:(不是基类,而是一个table,创建table要主键和关系表的外键)
1、(没有主键)sqlalchemy.exc.ArgumentError: Mapper Mapper|Base|base could not assemble any primary key columns for mapped table 'base'
2、(没有外键)sqlalchemy.exc.NoForeignKeysError: Can't find any foreign key relationships between 'base' and 'books'.
from kirin_app.db_models import db
class Base(db.Model):
# Flask-SQLAlchemy创建table时,如何声明基类(这个类不会创建表,可以被继承)
# 方法就是把__abstract__这个属性设置为True,这个类为基类,不会被创建为表!
__abstract__ = True
id = db.Column(db.Integer,primary_key=True)
status = db.Column(db.Integer,default=1)
from kirin_app.db_models import db
from kirin_app.db_models.base_model import Base
class Books(Base):
id = db.Column("id", db.Integer, primary_key=True, autoincrement=True)
title = db.Column("title", db.String(10))
author = db.Column("author", db.String(10))
isbn = db.Column("isbn", db.Integer, nullable=True, unique=True)
price = db.Column("price", db.Integer)
binding = db.Column("binding", db.String(10))
sqlalchemy官方链接:https://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/api.html#abstract