スポンサーリンク

flask_mysqldbで今までMySQLと接続してました。Flask_sqlalchemyという便利なものがあるとは聞いていましたが、やっとSQLに慣れてきたのに別のことをやるのは、、、

と思いましたが、勇気を振り絞って頭を切り替えることに。コードがすっきりして見やすいです。

まずは接続した内容を備忘録。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import yaml

db = SQLAlchemy()
app = Flask(__name__)
with open('db.yaml') as file:
    db_params = yaml.safe_load(file)
    app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql://{db_params['mysql_user']}:{db_params['mysql_password']}@{db_params['mysql_host']}/{db_params['mysql_db']}"
db.init_app(app)

# Define Model
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(255), unique=True, nullable=False)
    email = db.Column(db.String(255))

# Create Table
with app.app_context():
    db.create_all()


@app.route('/')
def index():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(debug=True)

db.yamlファイルの中身

mysql_host : 'localhost'
mysql_user : 'root'
mysql_password : '<パスワード>'
mysql_db : '<DB名>'

 

以下のエラーが発生した

ModuleNotFoundError: No module named 'MySQLdb'
PyMySQLをインストールしてみる
pip install PyMySQL

▶︎解決せず、同じエラー

mysqlclientをインストールしてみる
pip install mysqlclient

▶︎解決!エラーが発生しなくなった

Twitterでフォローしよう

おすすめの記事