sql >> Databáze >  >> RDS >> Mysql

Jak vybudovat flaskovou aplikaci na již existující databázi?

Řekl bych, že vaše otázka nemá s baňkou vůbec nic společného. Například nemáte problém se šablonami, trasami, pohledy nebo dekorátory přihlášení.

Kde bojujete, je v SQLAlchemy.

Můj návrh je tedy chvíli Flask ignorovat a nejprve si zvyknout na SQLAlchemy. Musíte si zvyknout na svou stávající databázi a jak k ní přistupovat z SQLAlchemy. Použijte nějaký dokumentační nástroj MySQL, abyste se v tom zorientovali. Začátek s něčím takovým (všimněte si, že to nemá nic společného s Flask ask all ... zatím):

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

V řádku "engine = " musíte zadat svou cestu ke své databázi MySQL, aby ji SQLAlchemy našel. V mém případě jsem použil již existující databázi sqlite3.

V řádku "class Users(Base) " potřebujete použít jednu z existujících tabulek ve vaší databázi MySQL. Věděl jsem, že moje databáze sqlite3 má tabulku s názvem "users".

Po tomto bodě SQLalchemy ví, jak se připojit k vaší databázi MySQL, a ví o jedné z tabulek. Nyní musíte přidat všechny ostatní tabulky, které vás zajímají. Nakonec musíte určit vztahy k SQLalchemy. Zde mám na mysli věci jako one-to-one, one-to-many, many-to-many, rodič-dítě a tak dále. Webová stránka SQLAlchemy o tom obsahuje poměrně obsáhlou sekci.

Za řádkem "if __name__ == '__main__' " právě přichází nějaký testovací kód. Bude spuštěn, pokud neimportuji svůj python skript, ale spustím ho. Zde vidíte, že vytvářím relaci DB a je to pro velmi jednoduchý dotaz.

Navrhuji, abyste si nejprve přečetli o důležitých částech dokumentace SQLAlchemy, například o definici popisné tabulky, modelu vztahů a způsobu dotazování. Jakmile to budete vědět, můžete změnit poslední část mého příkladu na ovladač (např. pomocí Pythonu yield metoda) a napište pohled, který používá tento řadič.



  1. Postgres analogie k CROSS APPLY na SQL Server

  2. jak spustit aplikaci s SQLite darabase na emulátoru Android Studio?

  3. Jak převést pole json na řádky v postgresu

  4. Dotaz na názvy sloupců z tabulky od jiného uživatele