Форум сайта python.su
что такое миграции и зачем я знаю. Что такое базы данных тоже.
и даже могу создать/обновить базу при помощи 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 делает, и как ему сказать про файл выше.
Офлайн
Migrate не использую, потому как не хочу привязываться с Flask_alchemy моделям. Использую чистый alembic, поверх которого работает flask-migrate.
Офлайн
ага, т.е. я не с того конца кинулся.
Спасибо, пойду переваривать alembic
Но, я к тому, что вот в django очень приятно (в последние времена) делать python manage.py migrate, да, не супер навороченный SQL, но зато сразу, вот тут бы (во Flask-е) так же.
Вообще, я еще плохо SQLAlchemy знаю, там миграции можно из командной строки или как-то так с кодом по минимуму делать - чтобы оно считало структуру бд и изменило?
а другие ОРМ (наприм. pywee) могут делать миграции?
Офлайн
Во фласке так же. Нужно просто настроить менеджера и все Просто я не люблю flask-sqlalchemy…
Офлайн
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
Отредактировано sander (Сен. 14, 2016 13:44:29)
Офлайн
в-общем все получилось и даже понялось.
спасибо, правда уже 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))
Отредактировано Koala (Сен. 14, 2016 21:17:48)
Офлайн
SQLAlchemy-migrate
Да никак оно не работает Патчит алембик, а потом использует его команды…
Офлайн
Koala
вызываю напрямую
python manage.py db …
+ у меня, практически во всех проектах, в manage.py еще менеджеры команд добавляются
Отредактировано sander (Сен. 14, 2016 21:33:17)
Офлайн