Hướng dẫn do bạn chỉ ra cho thấy cách kết nối đúng đắn với MySQL bằng SQLAlchemy. Dưới đây là mã của bạn với rất ít thay đổi:
Giả định của tôi là máy chủ MySQL của bạn đang chạy trên cùng một máy có Flask đang chạy và tên cơ sở dữ liệu là db_name. Trong trường hợp máy chủ của bạn không phải là cùng một máy, hãy đặt IP máy chủ thay cho 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()
Tôi đã xảy ra trường hợp trình điều khiển mặc định được SQLAlchemy
sử dụng (mqsqldb
), không được biên dịch cho tôi trong môi trường ảo của tôi. Vì vậy, tôi đã chọn trình điều khiển MySQL có triển khai python đầy đủ pymysql
. Sau khi bạn cài đặt nó bằng cách sử dụng pip install pymysql
, SQLALCHEMY_DATABASE_URI sẽ thay đổi thành:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:[email protected]/db_name'
Mục đích của việc sử dụng ORM như SQLAlchemy là ở chỗ, bạn có thể sử dụng các cơ sở dữ liệu khác nhau với ít hoặc không thay đổi trong hầu hết các trường hợp. Vì vậy, câu trả lời của tôi là có. Bạn sẽ có thể sử dụng mã sqlite của mình để làm việc với MySQL với URI được ánh xạ như trong mã trên.