flask实现mysql连接池_mysql-Flask-SQLAlchemy-快速连接到多个数据库
一个数据库
该引擎使您可以使用连接池.默认情况下,它将在请求之间保持连接.基本用法(没有诸如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-快速连接到多个数据库相关推荐
- flask 操作mysql的两种方式-sqlalchemy操作
flask 操作mysql的两种方式-sqlalchemy操作二.ORM sqlalchemy操作#coding=utf-8 # model.pyfrom app import dbclass Use ...
- mysql数据库连接池_MySql数据库连接池
1.传统链接(如下为示意图) 注意: (1).传统方式找DriverManager要连接,数目是有限的. (2).传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的 ...
- mysql连接池的工作原理_连接池工作原理
连接池工作原理 连接池技术的核心思想是连接复用,通过建立一个数据库连接池以及一套连接使用.分配和管理策略,使得该连接池中的连接可以得到高效.安全的复用,避免了数据库连接频繁建立.关闭的开销. 连接池的 ...
- python pymysql连接池_杂项之pymysql连接池
杂项之pymysql连接池 本节内容 本文的诞生 连接池及单例模式 多线程提升 协程提升 后记 1.本文的诞生 由于前几天接触了pymysql,在测试数据过程中,使用普通的pymysql插入100W条 ...
- 11.什么是Redis连接池?如何使用Redis连接池? 嘻哈的简写笔记——Redis
1.什么是Redis连接池? Redis 和MySQL一样都有连接池,使用连接池可以***避免频繁的创建和销毁链接对象而消耗资源***: 2.如何使用Redis连接池? 创建连接池配置对象: 创建连接 ...
- python连接池原理_python redis之连接池的原理
python redis之连接池的原理 什么是连接池 通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接, 一般情况下, 这是没 ...
- java实现并发连接池_java并发实战:连接池实现
池化技术简介 在我们使用数据库的过程中,我们往往使用数据库连接池而不是直接使用数据库连接进行操作,这是因为每一个数据库连接的创建和销毁的代价是昂贵的,而池化技术则预先创建了资源,这些资源是可复用的,这 ...
- python连接池框架_Python中的连接池是非常重要的!神级程序员详解!
概述 连接池的作用就是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问.这样 省略了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁 ...
- net oracle连接池配置,Oracle ODP.NET连接池
数据库连接池 连接池是数据库连接的缓存,每当应用程序需要连接数据库时向连接池申请数据库连接,连接池负责具体数据库连接的创建和销毁.连接池中的数据库连接会缓存一段时间,后续的连接请求首先使用缓存中的数据 ...
- mysql怎么连接数据连接池_Mysql数据库连接池
一 开源数据连接池 1 dbcp dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧. 这个连接池可以设置最大和最小连接,连接等待时间 ...
最新文章
- php的$_FILES如何生成以及如何与上传文件对象产生联系
- Intellij IDEA 2019 自动生成 serialVersionUID
- 5 多数据save_《Netlogo多主体建模入门》笔记 7
- 3Delight粒子渲染,真快。
- sharepoint 2010 记录管理 对象模型
- 【超分辨率实验】基于高斯模糊的训练数据集构建方法改进(matlab)
- FFMPEG分析比较细的文章
- 数据库:SQL 语法速成手册,建议新手收藏!
- LeetCode 1138. 字母板上的路径
- 怎么判断linux22端口是否通,在Linux环境下使用SSH判断端口是否通(示例代码)
- php最新版本的安装,centos安装新PHP版本
- 使用Xftp5连接云服务器
- 雷军:明年2千元以上支持5G的手机,至少发布10款
- JS及java验证 IPV6,IPV4地址的 正则表达式
- TypeException: Could not resolve type alias******
- 单片机c51语言中 两个位变量类型是什么,51单片机中的数据类型解析
- 读书感受 之 《好好说话2》
- ardupilot固件移植
- 信息爆炸的年代,怎么治愈自己的焦虑
- 个人笔记使用(wolai,OneNote)