【问题标题】:Flask SQLAlchemy does not create all the columns of my modelFlask SQLAlchemy 不会创建我模型的所有列
【发布时间】:2021-12-31 13:32:00
【问题描述】:

我正在使用烧瓶和烧瓶 SQLAlchemy 来创建我的 sqllite 数据库,该数据库具有一个包含多个列的表。我已经创建了我的模型,但是一旦我运行应用程序,它只会创建前 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)
)

有什么解释吗?!

【问题讨论】:

    标签: flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    查看代码后,我认为这是预期的行为,因为您定义的唯一列是 idcustomerIDgender。 也许你只是对如何使用类型提示感到困惑,或者你没有注意这一点,仅此而已。

    试试这个:

    @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))
        ...
    
    
    

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 1970-01-01
      • 2020-06-05
      • 2014-12-18
      • 2023-03-21
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      相关资源
      最近更新 更多