切刀用的烧瓶延长件

Flask-CuttlePool的Python项目详细描述


烧瓶切割工具为烧瓶使用Cuttle Pool提供了一个方便的界面。

如何指导

如果你还没读过刀具的How-to Guide,你 真的应该再进一步。

FlaskCuttlePool对象接受与^{tt2}相同的参数$ 对象,以及烧瓶app对象。假设我们有 导入和app对象。

import sqlite3

from flask import Flask
from flask_cuttlepool import FlaskCuttlePool


app = Flask(__name__)

设置池对象有两种方法。池初始化时

pool = FlaskCuttlePool(sqlite3.connect, app=app, database='ricks_lab')

或者显式地使用init_app()

pool = FlaskCuttlePool(sqlite3.connect)
pool.init_app(app)

任何以CUTTLEPOOL_开头的配置键都将转换为 键值对。如果在传递到的初始参数中已经存在密钥 __init__()方法,它们将被 app.config。例如

pool = FlaskCuttlePool(sqlite3.connect, database='ricks_lab')
app.config['CUTTLEPOOL_DATABASE'] = 'citadel_of_ricks'
pool.init_app(app)

将导致与该app对象关联的连接池 正在连接到'citadel_of_ricks',而不是'ricks_lab'。每把钥匙 形式为app.config['CUTTLEPOOL_KEY'] = valueapp.config上的值对作为key=value传递给池构造函数,其中key是 小写字母。

FlaskCuttlePool对象还应该提供两个回调。这个 ping回调用于检查连接是否仍处于打开状态。这个 normalize_connection回调确保每个连接具有相同的状态 当它被从池中取回时。有关这些方法的详细信息,请参见 Cuttle Pool How-to Guide

继续上面的例子,这些回调可以实现如下 这个:

@pool.ping
def ping(connection):
    try:
        rv = connection.execute('SELECT 1').fetchall()
        return (1,) in rv
    except sqlite3.Error:
        return False

@pool.normalize_connection
def normalize_connection(connection):
    connection.row_factory = None

现在游泳池可以正常使用了。任何对get_connection()的调用都将 返回连接的方式与CuttlePool对象返回连接的方式相同。

为了方便起见,connectiongetter将存储 应用程序上下文上的连接,并在 connectiongetter被再次调用。当应用程序上下文被破坏时 关闭时,连接将返回到池。因此,没有必要 要对从connectiongetter检索的连接调用close(), 但如果调用close()就可以了。使用检索的连接 get_connection()应显式关闭。

便利方法cursor()将返回 连接存储在应用程序上下文中。

完整的示例如下:

import sqlite3

from flask import Flask
from flask_cuttlepool import FlaskCuttlePool


app = Flask(__name__)
app.config['CUTTLEPOOL_DATABASE'] = ':memory:'

pool = FlaskCuttlePool(sqlite3.connect)
pool.init_app(app)

@pool.ping
def ping(connection):
    try:
        rv = connection.execute('SELECT 1').fetchall()
        return (1,) in rv
    except sqlite3.Error:
        return False

@pool.normalize_connection
def normalize_connection(connection):
    connection.row_factory = None

with app.app_context():
    # Get a connection, store it on the application context and return to
    # user. This connection doesn't need to be explicitly closed.
    con = pool.connection
    # Subsequent calls to pool.connection will get the same connection from
    # the application context.
    con is pool.connection   # True

    # Get a different connection
    con2 = pool.get_connection()
    con2 is con   # False
    # This connection should be explicitly closed since it was retrieved by
    # get_connection().
    con2.close()

    # Get a cursor from the connection on the application context.
    cur = pool.cursor()
    cur.execute(SOME_SQL)
    cur.close()
    pool.connection.commit()

# Now the application context has been torn down, so the connection has been
# returned to the pool.
pool.connection is None   # True

常见问题解答

这些问题仅与烧瓶切割工具有关,如果没有,请检查切割工具的FAQ 在这里找到你的答案。

如何安装?

pip install flask-cuttlepool

什么是应用程序上下文?

这是一个烧瓶的延伸部分,所以它应该在烧瓶的上下文中使用 申请。见here至 了解Flask的应用程序上下文。

贡献

强烈建议在virtualenv中开发。

分叉存储库。

克隆存储库:

git clone https://github.com/<your_username>/flask-cuttlepool.git

以可编辑模式安装软件包:

cd flask-cuttlepool
pip install -e .[dev]

现在你准备好了。有关运行测试的信息,请参见下一节。

运行测试

可以使用命令pytest运行测试。

我在哪里能得到帮助?

如果你还没有阅读上面的指南,请先阅读。否则, 检查issue tracker。你的问题可能是 地址在此处,如果不是,请提交问题:)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
直接组件的javacamel-Junit测试   java@ConfigurationProperties在控制器注释类中工作,但在组件类中不工作   Eclipse中的java相对路径   java如何检查变量名是否包含字符串,然后输出字符串变量内容   java JPA CriteriaQuery<Object[]。类>和单个字段的多选返回列表<Object>   java通用同步代码块[无对象锁定]   JAVA网安卓中的URL。。新手问题   java如何分析运行Tomcat的嵌入式H2数据库的内存消耗?   这里不允许使用java Void   hibernate警告[commonLogger.java:60]ognl。MethodFailedException:对象[java.lang.NoSuchMethodException:([Ljava.lang.String;)]的方法失败   java静态类代替Oracle表如何   JAVA LWJGL纹理旋转   java是否有用于ical4j的类型化包装器?   java使用maven生成校验和并存储指定文件夹中的MD5文件   java如何定义文件的相对路径?   java对于gradle项目是否有一个等价的“mvn依赖项:buildclasspath”?   JavaHadoop文件系统。mkdirs(路径,权限)忽略该权限