Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wechsel von SQLite zu MySQL mit Flask SQLAlchemy

Das von Ihnen gezeigte Tutorial zeigt den richtigen Weg, um mit SQLAlchemy eine Verbindung zu MySQL herzustellen. Unten ist Ihr Code mit sehr kleinen Änderungen:

Ich gehe davon aus, dass Ihr MySQL-Server auf demselben Computer ausgeführt wird, auf dem Flask ausgeführt wird, und der Datenbankname db_name lautet. Falls Ihr Server nicht dieselbe Maschine ist, setzen Sie die Server-IP anstelle von 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()

Es ist mir passiert, dass der von SQLAlchemy verwendete Standardtreiber (mqsqldb ), wird in meinen virtuellen Umgebungen nicht für mich kompiliert. Daher habe ich mich für einen MySQL-Treiber mit vollständiger Python-Implementierung pymysql entschieden . Sobald Sie es mit pip install pymysql installiert haben , ändert sich der SQLALCHEMY_DATABASE_URI in:

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

Der Zweck der Verwendung von ORM wie SQLAlchemy besteht darin, dass Sie in den meisten Fällen unterschiedliche Datenbanken mit geringen oder keinen Änderungen verwenden können. Also, meine Antwort ist ja. Sie sollten in der Lage sein, Ihren SQLite-Code zu verwenden, um mit MySQL zu arbeiten, wobei der URI wie im obigen Code abgebildet ist.