Бих казал, че въпросът ти изобщо няма нищо общо с колбата. Например, нямате проблем с шаблоните, маршрутите, изгледите или декораторите за влизане.
Там, където се борите, е в SQLAlchemy.
Така че моето предложение е да игнорирате Flask за известно време и първо да свикнете с SQLAlchemy. Трябва да свикнете със съществуващата си база данни и как да получите достъп до нея от SQLAlchemy. Използвайте някакъв инструмент за документация на MySQL, за да се ориентирате в това. Започнете с нещо подобно (обърнете внимание, че няма нищо общо с Flask, попитайте всички... все още):
#!/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
В реда „engine =
" трябва да предоставите своя път до вашата MySQL база данни, така че SQLAlchemy да я намери. В моя случай използвах вече съществуваща база данни sqlite3.
В реда „class Users(Base)
" трябва да използвате една от съществуващите таблици във вашата MySQL база данни. Знаех, че моята база данни sqlite3 има таблица с име "users".
След този момент SQLalchemy знае как да се свърже с вашата MySQL база данни и знае за една от таблиците. Сега трябва да добавите всички останали таблици, които ви интересуват. И накрая, трябва да посочите връзки към SQLalchemy. Тук имам предвид неща като едно към едно, едно към много, много към много, родител-дете и така нататък. Уебсайтът на SQLAlchemy съдържа доста дълъг раздел за това.
След реда "if __name__ == '__main__'
" идва само някакъв тестов код. Ще се изпълни, ако не импортирам моя скрипт на python, а стартирам. Тук виждате, че създавам DB сесия и това е за много проста заявка.
Моето предложение е първо да прочетете за важните части от документацията на SQLAlchemy, например дефиницията на описателната таблица, модела на връзката и как да правите заявки. След като разберете това, можете да промените последната част от моя пример в контролер (например с помощта на yield
на Python метод) и напишете изглед, който използва този контролер.