sql >> Database teknologi >  >> RDS >> Mysql

Skift fra SQLite til MySQL med Flask SQLAlchemy

Den vejledning, du peger på, viser den rigtige måde at oprette forbindelse til MySQL ved hjælp af SQLAlchemy. Nedenfor er din kode med meget små ændringer:

Mine antagelser er, at din MySQL-server kører på den samme maskine, hvor Flask kører, og databasenavnet er db_name. Hvis din server ikke er den samme maskine, skal du sætte serverens IP i stedet for 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 skete for mig, at standarddriveren brugt af SQLAlchemy (mqsqldb ), bliver ikke kompileret for mig i mine virtuelle miljøer. Så jeg har valgt en MySQL-driver med fuld python-implementering pymysql . Når du har installeret det ved hjælp af pip install pymysql , vil SQLALCHEMY_DATABASE_URI ændres til:

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

Formålet med at bruge ORM som SQLAlchemy er, at du kan bruge forskellige databaser med ringe eller ingen ændring i de fleste tilfælde. Så mit svar er ja. Du bør være i stand til at bruge din sqlite-kode til at arbejde med MySQL med URI'en kortlagt som i ovenstående kode.



  1. hvordan man beregner lighed mellem to strenge i MYSQL

  2. Hvordan Tan() virker i PostgreSQL

  3. gemmer python-objekt i postgres-bord med pickle

  4. Hvornår skal jeg bruge transaktioner i mine forespørgsler?