相关疑难解决方法(0)

SQLAlchemy,将对象绑定到Session

出于各种原因,我试图从数据库中获取对象集合,并将其传递给另一个未连接到数据库的进程.我的代码看起来像下面的那个,但我一直在

sqlalchemy.exc.UnboundExecutionError: Instance <MyClass at 0x8db7fec> is not bound to a Session; attribute refresh operation cannot proceed
Run Code Online (Sandbox Code Playgroud)

当我尝试在get_list()方法之外查看列表中的元素时.

def get_list (obj):
    sesson = Session()
    lst = session.query(MyClass).all()
    session.close()
    return lst
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用它

def get_list_bis (obj)
    session = Session()
    return session.query(MyClass).all()
Run Code Online (Sandbox Code Playgroud)

我能够使用元素,但担心会话的状态,因为它没有关闭.

我在这里错过了什么?

python sqlalchemy

55
推荐指数
2
解决办法
4万
查看次数

Flask-SQLAlchemy 会话对象没有看到对数据库的更改?

我在 PythonAnywhere 上有一个网站,它使用 Flask 和 Flask-SQLAlchemy 连接到 MySQL 数据库。用户可以使用网站将一个任务进行排队,作为记录保存到数据库中,然后一个单独的计划任务(Python 程序)检查数据库并处理每个未处理的记录。

我遇到的问题是计划任务的数据库查询似乎只有在第一次运行时才找到新记录,但是如果我随后使用网站添加新任务,仍在运行的计划任务的重复数据库查询(每 5 秒)似乎没有检测到新记录。

关于这里可能发生什么的任何想法?

这是 bash 文件运行的代码:

def generate_any_pending_videos():
    unfinished_videos = db.session.query(Video)\
                                  .filter(~Video.status.has(VideoStatus.status.in_(['Error', 'Finished', 'Video deleted'])))\
                                  .order_by(Video.datetime_created)\
                                  .all()
    for video in unfinished_videos:
        try:
            logging.info("Attempting to create video for video %d" % video.id)
            generate_video(video)
        except Exception as e:
            logging.error(str(e))


if __name__ == '__main__':
    while True:
        generate_any_pending_videos()
        time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

python mysql flask flask-sqlalchemy pythonanywhere

1
推荐指数
2
解决办法
2217
查看次数