Найти - Пользователи
Полная версия: Flask-Migrate объясните, пожалуйста, как работает
Начало » Web » Flask-Migrate объясните, пожалуйста, как работает
1
Koala
что такое миграции и зачем я знаю. Что такое базы данных тоже.
и даже могу создать/обновить базу при помощи SQLAlchemy, flask-sqlalchemy, и даже просто средствами питона,

а вот как запустить flask-migrate, чтоб работало - это я понять не могу, в документации как обычно - мутно написано и без реально работающего примера - кусок кода - а к чему его прикручивать??
Читаю и не могу понять:
http://flask-migrate.readthedocs.io/en/latest/
https://github.com/miguelgrinberg/flask-migrate/
(дело происходит под win, еще есть Ubuntu с debian, но нужно запустить под win)
============ начало их примера ==========
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config = ‘sqlite//app.db’
app.config = True # new


db = SQLAlchemy(app)
migrate = Migrate(app, db)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))

============ конец их примера ==========

сделал батничек:
set FLASK_APP=hello @REM допустим, что файл выше это hello.py
set FLASK_DEBUG=1
flask db init

Батник отработал не в этом окне, ну ладно, вручную сделал set-ы
если у меня hello, то это как бы hello.py, лежащий рядом?
он его не видит, а если делать через структуру app.py,
то я не понимаю куда пихать этот код.

да и просто flask db init (с запуском и путями все хорошо)
Во первых я не понимаю, кто (из установленных пакетов) собрал этот flask.exe (в scripts)
Во вторых, что же этот flask.exe делает, и как ему сказать про файл выше.




4kpt_IV
Migrate не использую, потому как не хочу привязываться с Flask_alchemy моделям. Использую чистый alembic, поверх которого работает flask-migrate.
Koala
ага, т.е. я не с того конца кинулся.
Спасибо, пойду переваривать alembic

Но, я к тому, что вот в django очень приятно (в последние времена) делать python manage.py migrate, да, не супер навороченный SQL, но зато сразу, вот тут бы (во Flask-е) так же.

Вообще, я еще плохо SQLAlchemy знаю, там миграции можно из командной строки или как-то так с кодом по минимуму делать - чтобы оно считало структуру бд и изменило?

а другие ОРМ (наприм. pywee) могут делать миграции?


4kpt_IV
Во фласке так же. Нужно просто настроить менеджера и все Просто я не люблю flask-sqlalchemy…
sander
Koala
в документации рабочий кусок кода

создаешь файл manage.py
в нем делаешь
 from flask.ext.migrate import Migrate, MigrateCommand
from app import app, db
Migrate(app, db)
manager = Manager(app)
manager.add_command("db", MigrateCommand)
if __name__ == '__main__':
    manager.run()

запускаешь
 python manage.py db init
Koala
в-общем все получилось и даже понялось.

спасибо, правда уже from flask_migrate …
да и from flask_script надо.

н-да, чтобы все это понять, пришлось сначала разобраться как работает SQLAlchemy-migrate,
потом пойти на “часть 2” из доки по Flask-Migrate (с flask_script и manage.py), которая неожиданно заработала.

а в том, что у меня не получалось, оказался дурацкий глюк документации:
http://flask-migrate.readthedocs.io/en/latest/

пример рабочий, дело в другом (см. ниже)
 #
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config = sqlite///app.db
app.config = True # new
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))

Например, этот файл что выше, назовем hello.py

вот засада:
я пишу вот так:
set FLASK_APP=hello @REM допустим, что файл выше это hello.py

и радостно думаю, что это hello и есть hello.py, а надо было писать
вот так:
set FLASK_APP=hello.py

теперь заработало и так (flask db init и прочее)
=====================================
Если бы в документации внятно назвали этот файл примера.
А про set я вообще узнал, лишь запустив flask.exe без параметров.
в документации про это - ни гугу.
Но, ладно-ладно, спасибо, что вообще она есть.
=====================================
сколько времени жизни тратится зря на такую чушь.


4kpt_IV
SQLAlchemy-migrate
Да никак оно не работает Патчит алембик, а потом использует его команды…
sander
Koala
вызываю напрямую
python manage.py db …

+ у меня, практически во всех проектах, в manage.py еще менеджеры команд добавляются
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB