【问题标题】:Creating a sqlite database connection for a flask app为烧瓶应用程序创建 sqlite 数据库连接
【发布时间】:2019-11-15 12:06:27
【问题描述】:

我正在开发一个从数据库文件读取、处理数据并返回 json 对象的 Web 后端。我并不真正了解烧瓶以及烧瓶应用程序中变量的生活方式。

如下所示,我正在从 wsgi 文件调用 flaskApp。我根据flask文档创建了“get_db()”函数,但是使用这个函数没有任何改进。

有没有办法只连接一次而不是每次调用 URL 时都连接到数据库?

#file flaskApp.py
#!/usr/bin/env python3.6
from flask import Flask
...

def get_db():
    if 'db' not in g:
        g.db = sqlite3.connect("database.db")
    return g.db

app = Flask(__name__)

@app.route('/getResourceUsage/<string:buildingNumber>')
def getResource(buildingNumber):
    cursor = get_db().cursor()

    cursor.execute("SELECT * FROM room WHERE building='" + buildingNumber + "'")
    ...
    return json
#file wsgi.py
#!/usr/bin/env python3.6

from flaskApp import app

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=40800)

【问题讨论】:

    标签: python python-3.x sqlite flask


    【解决方案1】:

    你可以这样做:

    #file flaskApp.py
    #!/usr/bin/env python3.6
    from flask import Flask
    ...
    
    
    app = Flask(__name__)
    
    g.db = sqlite3.connect("database.db")
    cursor = get_db().cursor()
    
    @app.route('/getResourceUsage/<string:buildingNumber>')
    def getResource(buildingNumber):
        cursor.execute("SELECT * FROM room WHERE building='" + buildingNumber + "'")
        ...
        return json
    
    

    现在您可以访问cursor 以在所有端点中进行查询

    【讨论】:

    • 这不会在每个 url 调用上重新创建一个新的数据库连接?
    • 没有。它只会创建一个
    猜你喜欢
    • 2016-09-20
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多