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

¿Cómo construir una aplicación de matraz alrededor de una base de datos ya existente?

Diría que su pregunta no tiene nada que ver con el matraz. Por ejemplo, no tiene ningún problema con las plantillas, las rutas, las vistas o los decoradores de inicio de sesión.

Donde luchas es en SQLAlchemy.

Entonces, mi sugerencia es ignorar Flask por un tiempo y acostumbrarse primero a SQLAlchemy. Debe acostumbrarse a su base de datos existente y cómo acceder a ella desde SQLAlchemy. Use alguna herramienta de documentación de MySQL para encontrar su camino alrededor de esto. El comienzo con algo como esto (tenga en cuenta que no tiene nada que ver con Flask, pregunte a todos ... todavía):

#!/usr/bin/python
# -*- mode: python -*-

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///webmgmt.db', convert_unicode=True, echo=False)
Base = declarative_base()
Base.metadata.reflect(engine)


from sqlalchemy.orm import relationship, backref

class Users(Base):
    __table__ = Base.metadata.tables['users']


if __name__ == '__main__':
    from sqlalchemy.orm import scoped_session, sessionmaker, Query
    db_session = scoped_session(sessionmaker(bind=engine))
    for item in db_session.query(Users.id, Users.name):
        print item

En la línea "engine = " debe proporcionar su ruta a su base de datos MySQL, para que SQLAlchemy la encuentre. En mi caso, utilicé una base de datos sqlite3 preexistente.

En la línea "class Users(Base) " necesita usar una de las tablas existentes en su base de datos MySQL. Sabía que mi base de datos sqlite3 tenía una tabla llamada "usuarios".

Después de este punto, SQLalchemy sabe cómo conectarse a su base de datos MySQL y conoce una de las tablas. Ahora necesita agregar todas las demás tablas que le interesan. Finalmente, debe especificar las relaciones con SQLalchemy. Aquí me refiero a cosas como uno a uno, uno a muchos, muchos a muchos, padre-hijo, etc. El sitio web de SQLAlchemy contiene una sección bastante larga sobre esto.

Después de la línea "if __name__ == '__main__' " solo viene un código de prueba. Se ejecutará si no importo mi script de python, sino que lo ejecuto. Aquí puede ver que creo una sesión de base de datos y es para una consulta muy simple.

Mi sugerencia es que primero lea sobre las partes importantes de la documentación de SQLAlchemy, por ejemplo, la definición de la tabla descriptiva, el modelo de relación y cómo consultar. Una vez que sepa esto, puede cambiar la última parte de mi ejemplo en un controlador (por ejemplo, usando el yield de Python método) y escriba una vista que use ese controlador.