在使用Flask SQLAlchemy时从SQLite切换到MySQL

19 浏览
0 Comments

在使用Flask SQLAlchemy时从SQLite切换到MySQL

我有一个使用Flask SQLAlchemy和SQLite构建的网站,现在需要切换到MySQL。我已经迁移了数据库本身,并在MySQL下运行,但是:

  1. 我无法弄清楚如何连接到MySQL数据库(即,SQLALCHEMY_DATABASE_URI应该是什么);
  2. 我不确定我的现有SQLAlchemy SQLite代码是否适用于MySQL。

我怀疑(1)相当简单,只是一个展示如何映射的问题,例如,我在MySQL数据库工具中使用的连接对话框的内容应该如何格式化为一个适当的URL。但是我对(2)感到担心,我原以为SQLAlchemy提供了一个抽象层,使得简单的SQLAlchemy代码如下所示:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
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 '' % self.username
admin = User('admin', '[email protected]')
db.session.add(admin)
User.query.all()
User.query.filter_by(username='admin').first()

只需适当更改数据库URI,就能正常工作,但是我找到的用于使用SQLAlchemy和MySQL的示例似乎使用了完全不同的API。

我是否可以通过简单更改数据库URI来迁移我的Flask SQLAlchemy代码以使其与MySQL数据库一起工作?如果可以,那么(1)该URI应该是什么?

0