Tutorial yang Anda tunjukkan menunjukkan cara yang benar untuk terhubung ke MySQL menggunakan SQLAlchemy. Di bawah ini adalah kode Anda dengan sedikit perubahan:
Asumsi saya adalah server MySQL Anda berjalan pada mesin yang sama tempat Flask berjalan dan nama databasenya adalah db_name. Jika server Anda bukan mesin yang sama, letakkan IP server di tempat 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()
Kebetulan pada saya bahwa driver default digunakan oleh SQLAlchemy
(mqsqldb
), tidak dikompilasi untuk saya di lingkungan virtual saya. Jadi saya telah memilih driver MySQL dengan implementasi python penuh pymysql
. Setelah Anda menginstalnya menggunakan pip install pymysql
, SQLALCHEMY_DATABASE_URI akan berubah menjadi:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:[email protected]/db_name'
Tujuan menggunakan ORM seperti SQLAlchemy adalah, Anda dapat menggunakan database yang berbeda dengan sedikit atau tanpa perubahan dalam banyak kasus. Jadi, jawaban saya adalah ya. Anda seharusnya dapat menggunakan kode sqlite Anda untuk bekerja dengan MySQL dengan URI yang dipetakan seperti pada kode di atas.