sql >> Database >  >> RDS >> Mysql

Hoe bouw je een kolftoepassing rond een reeds bestaande database?

Ik zou zeggen dat je vraag helemaal niets met kolf te maken heeft. U hebt bijvoorbeeld geen probleem met de sjablonen, routes, weergaven of inlogdecorators.

Waar je moeite mee hebt, is bij SQLAlchemy.

Dus mijn suggestie is om Flask een tijdje te negeren en eerst aan SQLAlchemy te wennen. U moet wennen aan uw bestaande database en hoe u deze kunt openen vanuit SQLAlchemy. Gebruik een of andere MySQL-documentatietool om hierin uw weg te vinden. Het begin met zoiets als dit (merk op dat het niets te maken heeft met Flask ask all ... nog):

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

In de regel "engine = " je moet je pad naar je MySQL-database opgeven, zodat SQLAlchemy het vindt. In mijn geval gebruikte ik een reeds bestaande sqlite3-database.

In de regel "class Users(Base) " je moet een van de bestaande tabellen in je MySQL-database gebruiken. Ik wist dat mijn sqlite3-database een tabel met de naam "users" had.

Na dit punt weet SQLalchemy hoe verbinding te maken met uw MySQL-database en kent het een van de tabellen. U moet nu alle andere tabellen toevoegen waar u om geeft. Ten slotte moet u relaties met SQLalchemy specificeren. Hier bedoel ik dingen als één-op-één, één-op-veel, veel-op-veel, ouder-kind enzovoort. De SQLAlchemy-website bevat hier een nogal lange sectie over.

Na de regel "if __name__ == '__main__' " Er komt gewoon wat testcode. Het wordt uitgevoerd als ik mijn python-script niet importeer, maar voer. Hier zie je dat ik een DB-sessie maak en dat is voor een heel eenvoudige query.

Mijn suggestie is dat u eerst leest over de belangrijke onderdelen van de documentatie van SQLAlchemy, bijvoorbeeld de beschrijvende tabeldefinitie, het relatiemodel en hoe u een query kunt uitvoeren. Als je dit eenmaal weet, kun je het laatste deel van mijn voorbeeld veranderen in een controller (bijvoorbeeld met behulp van Python's yield methode) en schrijf een weergave die die controller gebruikt.



  1. Aandacht besteden aan schattingen

  2. Een variabele periode in een interval gebruiken in Postgres

  3. mysql slaat automatisch tijdstempel voor het maken van records op

  4. De opdracht Compact en herstel gebruiken in Access