sql >> Base de Datos >  >> RDS >> Mysql

Cambiar de SQLite a MySQL con Flask SQLAlchemy

El tutorial señalado por usted muestra la forma correcta de conectarse a MySQL usando SQLAlchemy. A continuación se muestra su código con muy pocos cambios:

Mi suposición es que su servidor MySQL se ejecuta en la misma máquina donde se ejecuta Flask y el nombre de la base de datos es db_name. En caso de que su servidor no sea la misma máquina, coloque la IP del servidor en lugar 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()

Me pasó que el controlador por defecto usado por SQLAlchemy (mqsqldb ), no se compila para mí en mis entornos virtuales. Así que opté por un controlador MySQL con implementación completa de python pymysql . Una vez que lo instale usando pip install pymysql , SQLALCHEMY_DATABASE_URI cambiará a:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:[email protected]/db_name'

El propósito de usar ORM como SQLAlchemy es que, en la mayoría de los casos, puede usar una base de datos diferente con poco o ningún cambio. Entonces, mi respuesta es sí. Debería poder usar su código sqlite para trabajar con MySQL con el URI asignado como en el código anterior.