Jeg vil sige, at dit spørgsmål overhovedet ikke har noget med kolbe at gøre. For eksempel har du ikke et problem med skabeloner, ruter, visninger eller logon-dekoratorer.
Hvor du kæmper er ved SQLAlchemy.
Så mit forslag er at ignorere Flask i et stykke tid og først vænne sig til SQLAlchemy. Du skal vænne dig til din eksisterende database, og hvordan du får adgang til den fra SQLAlchemy. Brug noget MySQL-dokumentationsværktøj til at finde rundt i dette. Starten med noget som dette (bemærk, at det ikke har noget at gøre med Flask, spørg alle ... endnu):
#!/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
I linjen "engine =
" du skal angive din sti til din MySQL-database, så SQLAlchemy finder den. I mit tilfælde brugte jeg en allerede eksisterende sqlite3-database.
I linjen "class Users(Base)
" du skal bruge en af de eksisterende tabeller i din MySQL-database. Jeg vidste, at min sqlite3-database havde en tabel med navnet "brugere".
Efter dette tidspunkt ved SQLalchemy, hvordan man opretter forbindelse til din MySQL-database, og den kender til en af tabellerne. Du skal nu tilføje alle de andre borde, du holder af. Til sidst skal du specificere relationer til SQLalchemy. Her mener jeg ting som en-til-en, en-til-mange, mange-til-mange, forældre-barn og så videre. SQLAlchemy-webstedet indeholder et ret langt afsnit om dette.
Efter linjen "if __name__ == '__main__'
" Der kommer bare en testkode. Den vil blive udført, hvis jeg ikke importerer mit python-script, men kører. Her ser du, at jeg opretter en DB-session og er det for en meget simpel forespørgsel.
Mit forslag er, at du først læser om de vigtige dele af SQLAlchemys dokumentation, for eksempel den beskrivende tabeldefinition, relationsmodellen og hvordan man forespørger. Når du ved dette, kan du ændre den sidste del af mit eksempel til en controller (f.eks. ved at bruge Pythons yield
metode) og skriv en visning, der bruger denne controller.