Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изградим flask приложение около вече съществуваща база данни?

Бих казал, че въпросът ти изобщо няма нищо общо с колбата. Например, нямате проблем с шаблоните, маршрутите, изгледите или декораторите за влизане.

Там, където се борите, е в 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 метод) и напишете изглед, който използва този контролер.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql има ли еквивалент на @@ROWCOUNT като в mssql?

  2. Как да филтрирате SQL резултатите във връзка има-много-през

  3. Обединете две таблици в една SQL заявка и направете стойностите на датите уникални

  4. Laravel 5.4 на PHP 7.0:PDO изключение - не можа да се намери драйвер (MySQL)

  5. Има ли начин да се покаже клауза WHERE само за едно поле в MySQL?