sql >> Databasteknik >  >> RDS >> Mysql

Hur bygger man en kolvapplikation runt en redan befintlig databas?

Jag skulle säga att din fråga inte har något med kolv att göra alls. Du har till exempel inga problem med mallar, rutter, vyer eller inloggningsdekoratörer.

Där du kämpar är på SQLAlchemy.

Så mitt förslag är att ignorera Flask ett tag och vänja sig vid SQLAlchemy först. Du måste vänja dig vid din befintliga databas och hur du kommer åt den från SQLAlchemy. Använd något MySQL-dokumentationsverktyg för att hitta runt detta. Början med något sånt här (observera att det inte har något att göra med Flask fråga alla ... ännu):

#!/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

På raden "engine = " du måste ange din sökväg till din MySQL-databas, så att SQLAlchemy hittar den. I mitt fall använde jag en redan existerande sqlite3-databas.

På raden "class Users(Base) " du måste använda en av befintliga tabeller i din MySQL-databas. Jag visste att min sqlite3-databas hade en tabell som heter "användare".

Efter denna punkt vet SQLalchemy hur man ansluter till din MySQL-databas och den känner till en av tabellerna. Du måste nu lägga till alla andra tabeller som du bryr dig om. Slutligen måste du specificera relationer till SQLalchemy. Här menar jag saker som en-till-en, en-till-många, många-till-många, förälder-barn och så vidare. SQLAlchemys webbplats innehåller ett ganska långt avsnitt om detta.

Efter raden "if __name__ == '__main__' " kommer bara lite testkod. Den kommer att köras om jag inte importerar mitt python-skript, utan kör. Här ser du att jag skapar en DB-session och är det för en mycket enkel fråga.

Mitt förslag är att du först läser om de viktiga delarna av SQLAlchemys dokumentation, till exempel den beskrivande tabelldefinitionen, relationsmodellen och hur man frågar. När du väl vet detta kan du ändra den sista delen av mitt exempel till en kontroller (t.ex. med Pythons yield metod) och skriv en vy som använder den kontrollern.



  1. Transaktionsisolering i PostgreSQL

  2. ORA-65139:Missmatch mellan XML-metadatafil och datafil

  3. Hur skapar man en säkerhetskopia av en enda tabell i en postgres-databas?

  4. Hur kan jag köra ett inbyggt SQL-skript i JPA/Hibernate?