首页 > 解决方案 > Flask 中的 SQLAlchemy:我需要关闭数据库会话吗?

问题描述

这是我第一次编写 Web 应用程序并使用 SQLAlchemy,我不确定我是否完全理解会话的概念。目前,每当需要查询数据库时,我都会加载一个新会话。正如我在下面所做的那样,用 sql_session.close() 关闭它是否足够?

不关闭它会导致很多问题吗?

engine = create_engine('sqlite:///database.db', echo=True)    
Base = declarative_base(engine)

class Kinases(Base):
    __tablename__ = 'Kinase'

    full_name = Column(String)
    uniprot_code = Column(String)


def loadSession():
    metadata = Base.metadata
    Session = sessionmaker(bind=engine)
    session = Session()
    return session


@app.route("/search/kinases/<query>")
def kinase_results(query):
    sql_session = loadSession()
    kinase = sql_session.query(Kinases).get(query)
    if kinase is None:
         return redirect(url_for('user_message', query=query))
    name = kinase.full_name
    sql_session.close()

标签: pythonsessionflasksqlalchemy

解决方案


在大多数情况下,在视图范围内创建会话是一个坏主意。请阅读sqla 的会话基础知识


推荐阅读