python - 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()
解决方案
在大多数情况下,在视图范围内创建会话是一个坏主意。请阅读sqla 的会话基础知识。
推荐阅读
- c++ - 为什么用 i++ 而不是 i+4 分配 malloc 分配的内存值(在 int 为 4 字节大的情况下)?
- javascript - 从javascript中的字符串数组替换字符串上的某些字符
- laravel - Laravel 减少显示模型数
- html - NAVBAR 响应从固定到不固定
- python - 使用 openpyxl 保存时缺少 sharedStrings.xml
- awk - 为什么在 grep 之后特定行的“samtools view”会被破坏?
- angularjs - 角度不从应用服务更新文件
- python-3.x - 引发 ConnectionError(SERVER_CLOSED_CONNECTION_ERROR)redis.exceptions.ConnectionError: 连接被服务器关闭
- css - Netlify 部署不会渲染 Hugo 网站的 CSS
- typescript - Typescript variadic generic class,接受可变数量的扩展公共基础的类对象?