Вот что я сделал:Колба-SQLAlchemy использованием глобального экземпляра DB
from flask import Flask
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
dbhost = 'localhost'
dbuser = 'user'
dbpass = 'password'
dbname = 'db'
DBUri = 'mysql://%s:%[email protected]%s/%s?charset=utf8'%(dbuser,dbpass,dbhost,dbname)
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = (DBUri)
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
# an Engine, which the Session will use for connection
# resources
engine = create_engine(DBUri)
# create a configured "Session" class
Session = sessionmaker(bind=engine)
# create a Session
DBsession = Session()
и
@sched.cron_schedule(second='*/5')
def some_decorated_task():
date_now = datetime.datetime.now().date()
for item in DBsession.query(user_groups_n_hosts).filter(user_groups_n_hosts.end_time < str(date_now)):
print item.id, item.server_users.native_linux_user
есть таблица user_groups_n_hosts Приведенный выше код является функцией, которая выполняется каждые 30 секунд.
Моя проблема заключается в том, что только я начинаю флягу приложение в то время, если user_groups_n_hosts имеет 10 записей, то приведенный выше код будет держать не печать 10 записей независимо от того, какого бы числа записей вставляются в таблице user_groups_n_hosts снаружи , Другими словами, я считаю, что у моей функции есть некоторый экземпляр таблицы, которая инициализируется только в начале инициализации приложения. Я знаю, что делаю что-то глупое. пожалуйста, отметьте это.
вместо DBsession.query(user_groups_n_hosts).filter(user_groups_n_hosts.end_time < str(date_now)):
Я попытался user_groups_n_hosts.query.filter(user_groups_n_hosts.end_time < str(date_now)):
Но результат тот же.