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
▶︎解決!エラーが発生しなくなった