Le tutoriel indiqué par vous montre la bonne façon de se connecter à MySQL en utilisant SQLAlchemy. Voici votre code avec très peu de modifications :
Mes hypothèses sont que votre serveur MySQL s'exécute sur la même machine que Flask et que le nom de la base de données est db_name. Si votre serveur n'est pas la même machine, mettez l'IP du serveur à la place de localhost
.
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:[email protected]/db_name'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
admin = User('admin', '[email protected]')
db.create_all() # In case user table doesn't exists already. Else remove it.
db.session.add(admin)
db.session.commit() # This is needed to write the changes to database
User.query.all()
User.query.filter_by(username='admin').first()
Il m'est arrivé que le pilote par défaut utilisé par SQLAlchemy
(mqsqldb
), n'est pas compilé pour moi dans mes environnements virtuels. J'ai donc opté pour un pilote MySQL avec une implémentation complète de python pymysql
. Une fois que vous l'avez installé en utilisant pip install pymysql
, le SQLALCHEMY_DATABASE_URI deviendra :
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:[email protected]/db_name'
Le but de l'utilisation d'ORM comme SQLAlchemy est que, vous pouvez utiliser différentes bases de données avec peu ou pas de changement dans la plupart des cas. Donc, ma réponse est oui. Vous devriez pouvoir utiliser votre code sqlite pour travailler avec MySQL avec l'URI mappé comme dans le code ci-dessus.