PR

pythonのBlueprintとDB接続

本サイトはアフィリエイト広告を利用しています

pythonのFlaskでモジュール分割を行う方法を調べるとBlueprintを使うことがわかりました。
また、分割したモジュールでMariaDBへの接続も行いたく色々調べた結果、with app.app_context():内に分割側で使いたい設定をcurrent_appに設定することで動きました。
調べると様々な情報が出てくるのですが、なかなかしっくり動かなかったので、同じように困っている方は以下のような流れで書いてみてください。

<使い方>※Blueprintとcurrent_appに必要なところだけピックアップしてます。

main.py

from flask import Flask, current_app

#他モジュール(.py)のインポート
from sub import sub_api  #追加モジュール(sub.py)

app = Flask(__name__)
with app.app_context():
    current_app.config[‘dbconfig’] = { ‘host’: ‘127.0.0.1’,
                            ‘user’: ‘XXXXXX’,
                            ‘password’: ‘XXXXXX’,
                            ‘database’: ‘XXXXXX’ }
 
app.register_blueprint(sub_app)
 
@app.route(‘/testmain’)
def testmain_page() -> str:
    return render_template(‘testmain.html’)

sub.py

from flask import Flask, Blueprint, current_app 

#Blueprintでモジュールの登録
sub_api = Blueprint(‘sub’, __name__) #以降sub_api をappと同様に使用
 
@sub_api.route(‘/testsub’)
def testsub_page() -> str:
    return render_template(‘testsub.html’)
 
@sub_api.route(‘/testsub2’)
def testsub2() -> str:
    try:
        with UseDatabase(current_app.config[‘dbconfig’]) as cursor: # main.pyで設定したcurrent_appを使用
            _SQL = “””select count(*) from test_tbl”””

コメント

タイトルとURLをコピーしました