Flask SQLAlchemy 没有创建我模型的所有列
Flask SQLAlchemy does not create all the columns of my model
我正在使用 flask 和 flask SQLAlchemy 创建我的 sqllite 数据库,该数据库有一个 table 和多个列。我已经创建了我的模型,但是一旦我 运行 应用程序它只会创建前 03 列 ?!!!
...
db = SQLAlchemy()
def setup_db(app):
db.app = app
db.init_app(app)
def db_drop_and_create_all():
db.drop_all()
db.create_all()
...
@dataclass
class ChurnModel(inheritedModels):
id = int
customerID = String
gender = String
SeniorCitizen: int
Partner: String
...
__tablename__ = 'churn'
id = Column(Integer().with_variant(Integer, "sqlite"), primary_key=True)
customerID = Column(String(255), nullable=False)
gender = Column(String(255))
SeniorCitizen: Column(Integer())
Partner: Column(String(255))
...
def get_churn(self):
return {
"id": self.id,
"customerID": self.customerID,
"gender": self.gender,
"SeniorCitizen": self.SeniorCitizen,
"Partner": self.Partner,
...
}
...
这是我在 database.db
文件中发现的,周围有很多空值:
TE TABLE churn (
id INTEGER NOT NULL,
"customerID" VARCHAR(255) NOT NULL,
gender VARCHAR(255),
PRIMARY KEY (id)
)
有什么解释吗?!
查看代码后,我认为这是预期的行为,因为您定义的列只有 id
、customerID
和 gender
。
也许你只是对如何使用类型提示感到困惑,或者你没有注意它,仅此而已。
试试这个:
@dataclass
class ChurnModel(inheritedModels):
id: int
customerID: str
gender: str
SeniorCitizen: int
Partner: str
...
__tablename__ = 'churn'
id = Column(Integer().with_variant(Integer, "sqlite"), primary_key=True)
customerID = Column(String(255), nullable=False)
gender = Column(String(255))
SeniorCitizen= Column(Integer())
Partner= Column(String(255))
...
我正在使用 flask 和 flask SQLAlchemy 创建我的 sqllite 数据库,该数据库有一个 table 和多个列。我已经创建了我的模型,但是一旦我 运行 应用程序它只会创建前 03 列 ?!!!
...
db = SQLAlchemy()
def setup_db(app):
db.app = app
db.init_app(app)
def db_drop_and_create_all():
db.drop_all()
db.create_all()
...
@dataclass
class ChurnModel(inheritedModels):
id = int
customerID = String
gender = String
SeniorCitizen: int
Partner: String
...
__tablename__ = 'churn'
id = Column(Integer().with_variant(Integer, "sqlite"), primary_key=True)
customerID = Column(String(255), nullable=False)
gender = Column(String(255))
SeniorCitizen: Column(Integer())
Partner: Column(String(255))
...
def get_churn(self):
return {
"id": self.id,
"customerID": self.customerID,
"gender": self.gender,
"SeniorCitizen": self.SeniorCitizen,
"Partner": self.Partner,
...
}
...
这是我在 database.db
文件中发现的,周围有很多空值:
TE TABLE churn (
id INTEGER NOT NULL,
"customerID" VARCHAR(255) NOT NULL,
gender VARCHAR(255),
PRIMARY KEY (id)
)
有什么解释吗?!
查看代码后,我认为这是预期的行为,因为您定义的列只有 id
、customerID
和 gender
。
也许你只是对如何使用类型提示感到困惑,或者你没有注意它,仅此而已。
试试这个:
@dataclass
class ChurnModel(inheritedModels):
id: int
customerID: str
gender: str
SeniorCitizen: int
Partner: str
...
__tablename__ = 'churn'
id = Column(Integer().with_variant(Integer, "sqlite"), primary_key=True)
customerID = Column(String(255), nullable=False)
gender = Column(String(255))
SeniorCitizen= Column(Integer())
Partner= Column(String(255))
...