Djam36
@Djam36

Как этот код отрабатывает?

Привет, я не могу разобраться как отрабатывает данный код, а точнее создание DB
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:admin@localhost/Python3'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username


@app.route('/')
def index():
    return "Hello World"

if __name__ == "__main__":
    app.run()


После этого я запускаю консольку и пишу там следующее
from app import db
и
db.create_all()
Происходит какая-то "магия" и создается в итоге DB со структурой

id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)

Как это происходит я уже всю голову сломал, все понятно, но не понятно как он находит(получает) данные с которыми требуется создать DB

Я только разбираюсь со SQLAlchemy
Если прочитать документацию на сайте flask.pocoo.org/docs/0.11/patterns/sqlalchemy там есть аналогичный пример, но там понятно как он отрабатывает, а тут нет.
Скажите хоть в какую сторону копать, спасибо
  • Вопрос задан
  • 367 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
У вас каждый класс, который мапится на базу данны, настедуется от db.Model.
SQLAlchemy просто выбирает все наследуемые классы, находит все атрибуты этих классов и создает sql.
В каждом классе есть магический список наследников -MyClass.__subclasses__(), Так эта "магия" и работает. - stackoverflow.com/questions/3862310/how-can-i-find...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы