Python Flask Sqlite 未在特定行或名称中创建列

问题描述 投票:0回答:1

这真是令人兴奋 我正在尝试使用内存表来存储可以轻松获取的小数据,但我不想一直发送请求,所以我将其保存在内存中的 sqlite 表中 这是我的 init.py 文件:

from flask import Flask
from .models import db
from apscheduler.schedulers.background import BackgroundScheduler  # Corrected import

class Config:
    SCHEDULER_API_ENABLED = True
    # SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'
    SQLALCHEMY_DATABASE_URI = 'sqlite:///..//db.sqlite3'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)
    db.init_app(app)
    with app.app_context():
        db.create_all() # Create the database tables - IMPORTANT
    scheduler = BackgroundScheduler()  # Corrected class name
    scheduler.start()
    from .views import views
    from .auth import auth
    app.register_blueprint(views, url_prefix='/')
    app.register_blueprint(auth, url_prefix='/')
    return app

我编写了 db.sqlite3 以便能够在 vs-code 中看到它,但它在内存表中的工作原理是相同的

这是我的桌子:

class Holidays(db.Model):
    __tablename__ = 'Holidays'
    data_id = db.Column(db.Integer, primary_key=True)

    # date format: "yyyy-MM-dd"
    date = db.Column(db.String)
    
    
    test = db.Column(db.String)
    test2 = db.Column(db.Float)
    test3 = db.Column(db.Integer)
    # sholday = db.Column(db.Integer) 
    # sholday = db.Column(db.Integer)
    test4 = db.Column(db.Boolean)
    isholday = db.Column(db.Integer)
    sholday = db.Column(db.Integer)
    @classmethod
    def add(cls, holiday):
        db.session.add(holiday)
        db.session.commit()
    @classmethod
    def add_all(cls, holidays):
        db.session.add_all(holidays)
        db.session.commit()
    @classmethod
    def sholday(cls, date):
        holiday = Holidays.query.filter(Holidays.date == date).first()
        if holiday:
            return holiday.sholday
        return False
    @classmethod
    def does_date_exist(cls, date):
        return Holidays.query.filter(Holidays.date == date).first() is not None

现在在这里,它创建了除 sholday 之外的所有列,我最初将其名称命名为 is_holiday 但它也没有使用该名称创建。我将此行复制粘贴到其他地方,我更改了名称,它没有创建该列。

python sqlite flask sqlalchemy
1个回答
0
投票

问题是,有一个同名的函数定义。 即使在运行时或开发过程中没有错误,这个问题也与具有相同名称的函数有关。

sholday = db.Column(db.Integer)
def sholday(cls, date):
    holiday = Holidays.query.filter(Holidays.date == date).first()

将该函数重命名为其他名称以消除错误

© www.soinside.com 2019 - 2024. All rights reserved.