【问题标题】:Python dataset in web applicationWeb 应用程序中的 Python 数据集
【发布时间】:2016-03-23 04:56:50
【问题描述】:

我编写了一个简单的 REST API,其中 pybottle 作为 Web 框架,dataset 作为数据库处理程序。我想知道数据集如何处理(打开和关闭)与数据库的连接,以及我需要在多大程度上注意这一点。

考虑以下几点:

db = dataset.connect('sqlite:///database.db')
table = db['table']

def some_function():
    # do some manipulation (eg. insert) in 'table'

当我从 Web 应用程序(在另一个文件中)调用 some_function() 时会发生什么?函数执行后数据集是否正确打开和关闭与数据库的连接?或者我是否与每个函数调用都有一个新的开放连接?

【问题讨论】:

    标签: python sqlalchemy bottle


    【解决方案1】:

    Python 中的每个 SQL 驱动程序都遵循Python DB API PEP0249。 据我所知,您使用的是 SQLite 驱动程序,因此它应该遵循相同的规则。

    SQLAlchemy 有一种内置方式来建立持久连接并避免连接断开。您可以创建一个方法get_connection(),它返回一个Database 对象或在没有活动对象时重新建立连接。

    检查 connect documentationsource code 以了解库如何包装与数据库的通信。

    【讨论】:

    • 感谢您的回复!但是我并不清楚上面的代码 sn-p 是否可以。如果多个用户在 Web 应用程序中同时调用 some_function() 会发生什么?一个数据库操作会等到另一个完成吗?写操作后连接会自动关闭吗?我需要更改我的代码 sn-p 中的任何内容吗?
    • @wildthing some_function 不会在您的代码中打开连接。它是在模块级别(外部功能)完成的。 SQLAlchemy 检查连接是否已经存在,如果为 true,则使用当前连接,否则建立一个新连接。每个操作都使用相同的连接,不建议手动打开/关闭它,连接一直存在。请参阅解释如何处理连接的 SQLAlchemy 文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    相关资源
    最近更新 更多