You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask+SQLite无法创建指定列sholday的问题求助

问题排查与解决

核心原因

你的Holidays模型中,列名sholday和类方法def sholday(cls, date)重名了。Python中类的方法会覆盖同名的属性定义,导致SQLAlchemy无法正确解析这个列字段,因此数据库表中不会生成该列。

解决方案

  1. 修改类方法名称,避免与列名冲突,例如改成get_sholday:
    @classmethod
    def get_sholday(cls, date):
        holiday = Holidays.query.filter(Holidays.date == date).first()
        if holiday:
            return holiday.sholday
        return False
    
  2. 删除旧数据库文件:删掉本地的db.sqlite3文件(内存SQLite则直接重启应用即可),然后重新启动Flask项目,让db.create_all()重新生成包含sholday列的表结构。

注意事项

  • 定义SQLAlchemy模型时,务必避免列名与类方法、实例方法重名,这是Python类特性导致的常见问题。
  • 如果需要保留原有数据,建议使用Flask-Migrate进行数据库迁移,而不是直接删除数据库文件。

内容的提问来源于stack exchange,提问作者Sahin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:02:50