sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bygger man en kolbeapplikation omkring en allerede eksisterende database?

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.



  1. DATEFROMPARTS() Eksempler i SQL Server (T-SQL)

  2. Sådan indstilles standardbrugeradgangskoden i PostgreSQL

  3. Sådan fungerer UPPER() i MariaDB

  4. Vil du vælge alle kolonner, der starter med XXX, ved hjælp af et jokertegn?