sql >> Databasteknik >  >> RDS >> Mysql

Växla från SQLite till MySQL med Flask SQLAlchemy

Handledningen som du pekar på visar det rätta sättet att ansluta till MySQL med SQLAlchemy. Nedan är din kod med mycket små ändringar:

Mina antaganden är att din MySQL-server körs på samma maskin där Flask körs och databasnamnet är db_name. Om din server inte är samma maskin, sätt serverns IP i stället för 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()

Det hände mig att standarddrivrutinen som används av SQLAlchemy (mqsqldb ), kompileras inte åt mig i mina virtuella miljöer. Så jag har valt en MySQL-drivrutin med full python-implementering pymysql . När du har installerat det med pip install pymysql , kommer SQLALCHEMY_DATABASE_URI att ändras till:

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

Syftet med att använda ORM som SQLAlchemy är att du kan använda olika databas med liten eller ingen förändring i de flesta fall. Så mitt svar är ja. Du bör kunna använda din SQLite-kod för att arbeta med MySQL med URI:n mappad som i koden ovan.



  1. Infoga array i MySQL-databas med PHP

  2. PHP MySQL grekiska bokstäver som visar ???? märken

  3. Lagring av långa binära (rådata) strängar

  4. PL/SQL otillräckliga privilegier inom en fråga manuellt möjligt