尽管没有实施 __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)
我目前正在尝试在 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)