这真是令人兴奋 我正在尝试使用内存表来存储可以轻松获取的小数据,但我不想一直发送请求,所以我将其保存在内存中的 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 但它也没有使用该名称创建。我将此行复制粘贴到其他地方,我更改了名称,它没有创建该列。
问题是,有一个同名的函数定义。 即使在运行时或开发过程中没有错误,这个问题也与具有相同名称的函数有关。
sholday = db.Column(db.Integer)
def sholday(cls, date):
holiday = Holidays.query.filter(Holidays.date == date).first()
将该函数重命名为其他名称以消除错误