尽管没有实施 __init__ 方法,但缺少所需的位置

Missing required position for __init__ method despite not implementing one

我目前正在尝试在 SQLAlchemy 中为我的数据库创建模型,但是每当我尝试创建我的数据库时,我都会 运行 进入这个错误,尽管我什至没有实现 __init__ 函数。

TypeError: __init__() missing 1 required positional argument: 'item_type'

我确定我遗漏了一些愚蠢的东西,但有人能给我指出正确的方向吗

基本型号:

class EntityBase(db.Model):
    __abstract__ = True

    id = db.Column(db.Integer, primary_key=True)
    date_created = db.Column(db.TIMESTAMP, nullable=False, default=lambda: datetime.now())

继承模型:

class Recipe(db.Model):
    __tablename__ = 'Recipes'

    ingredients = db.Column(db.ARRAY, nullable=False)
    steps = db.Column(db.ARRAY, nullable=False)
    likes = db.Column(db.Integer, nullable=False, default=0)
    views = db.Column(db.Integer, nullable=False, default=0)
    title = db.Column(db.String, nullable=False)
    description = db.Column(db.String)

堆栈跟踪:

File "infrastructure\data\database_models\recipe.py", line 5, in <module>
    class Recipe(db.Model):
File "infrastructure\data\database_models\recipe.py", line 8, in Recipe
    ingredients = db.Column(db.ARRAY, nullable=False)
File "backend\venv\lib\site-packages\sqlalchemy\sql\schema.py", line 1565, in __init__
    super(Column, self).__init__(name, type_)
File "backend\venv\lib\site-packages\sqlalchemy\sql\elements.py", line 4640, in __init__
    self.type = type_api.to_instance(type_)
File "backend\venv\lib\site-packages\sqlalchemy\sql\type_api.py", line 1631, in to_instance
    return typeobj(*arg, **kw)
TypeError: __init__() missing 1 required positional argument: 'item_type'

db.model 中的构造函数似乎有一个必需的参数。因为您的 Recipe class 是从 db.model 派生的,所以它必须有一个构造函数调用 super class 并提供这个值。这也适用于从您的 EntityBase class 派生的任何内容。以下是如何正确执行此操作的示例。

class Recipe(db.Model):
    __tablename__ = 'Recipes'
    

    def __init__(self, item_type):
      super().__init__(item_type)
      ...

db.ARRAY()类型需要数组元素的类型。因此,如果 ingredients 是一个整数数组,它将是:

ingredients = db.Column(db.ARRAY(db.Integer()), nullable=False)