一个数据库

该引擎使您可以使用连接池.默认情况下,它将在请求之间保持连接.基本用法(没有诸如scoped_session或sessionmaker之类的花哨的东西)是这样的:

engine = create_engine(...)

@app.route(...)

def foo():

session = Session(bind=engine)

try:

session.query(...)

session.commit()

finally:

session.close()

return ""

最重要的是,您可以添加scoped_session和sessionmaker:

engine = create_engine(...)

Session = sessionmaker(bind=engine)

session = scoped_session(Session, scopefunc=...)

@app.route(...)

def foo():

try:

session.query(...)

session.commit()

finally:

session.close()

return ""

flask-sqlalchemy通过提供以下所有功能使您的生活更轻松:

db = SQLAlchemy(app)

@app.route(...)

def foo():

db.session.query(...)

db.session.commit()

return ""

多个数据库

您可以轻松地将此概念扩展到多个数据库:

engine1 = create_engine(...)

engine2 = create_engine(...)

@app.route(...)

def foo():

session = Session(bind=choose_engine_for_user())

try:

session.query(...)

session.commit()

finally:

session.close()

return ""

当您添加scoped_session和sessionmaker时:

engine1 = create_engine(...)

engine2 = create_engine(...)

Session1 = sessionmaker(bind=engine1)

Session2 = sessionmaker(bind=engine2)

session1 = scoped_session(Session1, scopefunc=...)

session2 = scoped_session(Session2, scopefunc=...)

@app.route(...)

def foo():

session = choose_session_for_user()

try:

session.query(...)

session.commit()

finally:

session.close()

return ""

当您有许多数据库时,这会有些烦人,在这种情况下,您可能应该编写一个注册表类来跟踪所有引擎和会话:

class SessionRegistry(object):

_registry = {}

def get(self, url, **kwargs):

if url not in self._registry:

engine = create_engine(url, **kwargs)

Session = session_maker(bind=engine)

session = scoped_session(Session, scopefunc=...)

self._registry[url] = session

return self._registry[url]

registry = SessionRegistry()

@app.route(...)

def foo():

session = registry.get(...)

try:

session.query(...)

session.commit()

finally:

session.close()

return ""

您需要在其之上添加某种LRU,以便不会无限创建引擎.

flask-sqlalchemy支持有限形式的多个数据库,其中每个模型都连接到不同的数据库.如果您适用,那么文档为here.

flask实现mysql连接池_mysql-Flask-SQLAlchemy-快速连接到多个数据库相关推荐

  1. flask 操作mysql的两种方式-sqlalchemy操作

    flask 操作mysql的两种方式-sqlalchemy操作二.ORM sqlalchemy操作#coding=utf-8 # model.pyfrom app import dbclass Use ...

  2. mysql数据库连接池_MySql数据库连接池

    1.传统链接(如下为示意图) 注意: (1).传统方式找DriverManager要连接,数目是有限的. (2).传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的 ...

  3. mysql连接池的工作原理_连接池工作原理

    连接池工作原理 连接池技术的核心思想是连接复用,通过建立一个数据库连接池以及一套连接使用.分配和管理策略,使得该连接池中的连接可以得到高效.安全的复用,避免了数据库连接频繁建立.关闭的开销. 连接池的 ...

  4. python pymysql连接池_杂项之pymysql连接池

    杂项之pymysql连接池 本节内容 本文的诞生 连接池及单例模式 多线程提升 协程提升 后记 1.本文的诞生 由于前几天接触了pymysql,在测试数据过程中,使用普通的pymysql插入100W条 ...

  5. 11.什么是Redis连接池?如何使用Redis连接池? 嘻哈的简写笔记——Redis

    1.什么是Redis连接池? Redis 和MySQL一样都有连接池,使用连接池可以***避免频繁的创建和销毁链接对象而消耗资源***: 2.如何使用Redis连接池? 创建连接池配置对象: 创建连接 ...

  6. python连接池原理_python redis之连接池的原理

    python redis之连接池的原理 什么是连接池 通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接, 一般情况下, 这是没 ...

  7. java实现并发连接池_java并发实战:连接池实现

    池化技术简介 在我们使用数据库的过程中,我们往往使用数据库连接池而不是直接使用数据库连接进行操作,这是因为每一个数据库连接的创建和销毁的代价是昂贵的,而池化技术则预先创建了资源,这些资源是可复用的,这 ...

  8. python连接池框架_Python中的连接池是非常重要的!神级程序员详解!

    概述 连接池的作用就是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问.这样 省略了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁 ...

  9. net oracle连接池配置,Oracle ODP.NET连接池

    数据库连接池 连接池是数据库连接的缓存,每当应用程序需要连接数据库时向连接池申请数据库连接,连接池负责具体数据库连接的创建和销毁.连接池中的数据库连接会缓存一段时间,后续的连接请求首先使用缓存中的数据 ...

  10. mysql怎么连接数据连接池_Mysql数据库连接池

    一 开源数据连接池 1 dbcp dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧. 这个连接池可以设置最大和最小连接,连接等待时间 ...

最新文章

  1. php的$_FILES如何生成以及如何与上传文件对象产生联系
  2. Intellij IDEA 2019 自动生成 serialVersionUID
  3. 5 多数据save_《Netlogo多主体建模入门》笔记 7
  4. 3Delight粒子渲染,真快。
  5. sharepoint 2010 记录管理 对象模型
  6. 【超分辨率实验】基于高斯模糊的训练数据集构建方法改进(matlab)
  7. FFMPEG分析比较细的文章
  8. 数据库:SQL 语法速成手册,建议新手收藏!
  9. LeetCode 1138. 字母板上的路径
  10. 怎么判断linux22端口是否通,在Linux环境下使用SSH判断端口是否通(示例代码)
  11. php最新版本的安装,centos安装新PHP版本
  12. 使用Xftp5连接云服务器
  13. 雷军:明年2千元以上支持5G的手机,至少发布10款
  14. JS及java验证 IPV6,IPV4地址的 正则表达式
  15. TypeException: Could not resolve type alias******
  16. 单片机c51语言中 两个位变量类型是什么,51单片机中的数据类型解析
  17. 读书感受 之 《好好说话2》
  18. ardupilot固件移植
  19. 信息爆炸的年代,怎么治愈自己的焦虑
  20. 个人笔记使用(wolai,OneNote)

热门文章

  1. tornado框架学习
  2. 用swift写的一款小游戏,模仿的僵尸危机
  3. 添加 centos 右键 terminal
  4. iATKOS v7硬盘安装教程(硬盘助手+变色龙安装版)
  5. Win2003 Server磁盘配额揭密启用篇
  6. 辞职的新方式:一言不合就消失!
  7. Sublime 常用操作
  8. idea提交本地项目到git
  9. Unity与安卓开发的一些路径知识
  10. Exchange 2010与Exchange Online混合部署PART 3:混合准备