Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como construir um aplicativo de frasco em torno de um banco de dados já existente?


Eu diria que sua pergunta não tem nada a ver com o frasco. Por exemplo, você não tem problemas com os modelos, rotas, visualizações ou decoradores de logon.

Onde você luta é no SQLAlchemy.

Então minha sugestão é ignorar o Flask por um tempo e se acostumar com o SQLAlchemy primeiro. Você precisa se acostumar com seu banco de dados existente e como acessá-lo do SQLAlchemy. Use alguma ferramenta de documentação do MySQL para encontrar o caminho para isso. O começo com algo assim (observe que não tem nada a ver com o Flask perguntar tudo ... ainda):
#!/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

Na linha "engine = " você precisa fornecer seu caminho para seu banco de dados MySQL, para que o SQLAlchemy o encontre. No meu caso, usei um banco de dados sqlite3 pré-existente.

Na linha "class Users(Base) " você precisa usar uma das tabelas existentes em seu banco de dados MySQL. Eu sabia que meu banco de dados sqlite3 tinha uma tabela chamada "users".

Após este ponto, o SQLalchemy sabe como se conectar ao seu banco de dados MySQL e sabe sobre uma das tabelas. Agora você precisa adicionar todas as outras tabelas que você se importa. Finalmente, você precisa especificar relacionamentos com SQLalchemy. Aqui quero dizer coisas como um para um, um para muitos, muitos para muitos, pai-filho e assim por diante. O site SQLAlchemy contém uma seção bastante longa sobre isso.

Após a linha "if __name__ == '__main__' " só vem algum código de teste. Ele será executado se eu não importar meu script python, mas executar. Aqui você vê que eu crio uma sessão de banco de dados e é isso para uma consulta muito simples.

Minha sugestão é que você leia primeiro sobre as partes importantes da documentação do SQLAlchemy, por exemplo, a definição da tabela descritiva, o modelo de relacionamento e como consultar. Depois de saber disso, você pode alterar a última parte do meu exemplo em um controlador (por exemplo, usando o yield do Python método) e escreva uma visão que use esse controlador.