Python 如何继承继承db.Model的类

Python 如何继承继承db.Model的类,python,sql,flask,sqlalchemy,Python,Sql,Flask,Sqlalchemy,我尝试通过结合flask应用程序,使用sqlalchemy创建另一个sql表 我有一个类Table1db.model,它有一些功能,我想通过创建另一个Table2类表和一些额外的列(继承现有列)来使用它的功能,不幸的是,当我尝试这样做时,SQLAlchemy的自动表单机制没有创建表,就像它对继承db.model的其他类所做的那样 db = SQLAlchemy(app) class Table1(db.Model): __tablename__ = "table1" id

我尝试通过结合flask应用程序,使用sqlalchemy创建另一个sql表

我有一个类
Table1
db.model
,它有一些功能,我想通过创建另一个
Table2
类表和一些额外的列(继承现有列)来使用它的功能,不幸的是,当我尝试这样做时,SQLAlchemy的自动表单机制没有创建
,就像它对继承
db.model的其他类所做的那样

db = SQLAlchemy(app)

class Table1(db.Model):
   __tablename__ = "table1"

   id                   = db.Column(db.String(36),  primary_key=True)

class Table2(Table1):
   __tablename__ = "table2"

   id                   = db.Column(db.String(36),  primary_key=True)
   extra_column         = db.Column(db.String(36),  primary_key=True)

您必须将
\uuuu abstract\uuuu=True
添加到表1中,但表1不会由SQLAlchemy ORM系统创建

      db = SQLAlchemy(app)



      class Table1(db.Model):
           __tablename__ = "table1"
           __abstract__ = True

           id                   = db.Column(db.String(36),  primary_key=True)

        class Table2(Table1):
           __tablename__ = "table2"

           id                   = db.Column(db.String(36),  primary_key=True)
           extra_column         = db.Column(db.String(36),  primary_key=True)

@snakecharmerb是的,但是我继承了
db.Model
,而不是
声明性的\u base
只是一个猜测,但是你需要
super()
Table1
\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我这样做了,但它不工作
db。Model
是一个声明性基类,尽管是一个定制的基类。您似乎正在尝试设置联接继承,但子模型没有对父模型的外键引用
Table2.id
看起来应该是那个引用,但是有
extra_列
形成一个带有
id
的复合主键会把它搞砸。想想看,这不符合逻辑。子表中只有一行应该引用父行,否则
Table2
的两个实例将共享状态(存储在table1中)。未创建表的另一个常见原因是调用
db.create\u all()
或类似调用时模型还不存在。换句话说,它还没有被导入/包含它的模块没有被评估,因此它在那个点上不存在。