Создать бд с помощью alembic python(flask)

Достался проект в котором бд поддерживается напрямую через alembic, а не flask-migrate . Как мне создать таблицы в бд с помощью команд alembic на основе уже написанной модели? Дело в том, что там, как бы помягче выразится, своеобразная архитектура и сам объект db выловить не так-то и просто. В документации я ничего не нашёл про инициализацию бд на основе уже написанных моделей, только миграции с прямыми командами самой алхимии. При попытке обратится к созданным вручную через субд таблицам в самом приложении, sqlalchemy ругается и выдаёт ошибку: no such table: user(например). Хотя открывая напрямую через бд можно найти эту таблицу и даже делать выборку(на тесте решил постаивть sqlite, на боевом сервере стоит postgres, если это важно).

Файл с моделями models.py:

from .ext import db
from hashlib import sha1
from flask import request
from datetime import datetime


class User(db.Model):
    __tablename__ = 'user'

    user_id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.LargeBinary(), nullable=False)
    secret = db.Column(db.String(20), nullable=False)
    activated = db.Column(db.DateTime)
    exchanges = db.relationship('Exchange', back_populates='user', cascade='all, delete-orphan', passive_deletes=True)
    buylogs = db.relationship('BuyLog', back_populates='user', cascade='all, delete-orphan', passive_deletes=True)

    # FE-1 29.02.20 
    parent_id = db.Column(db.Integer, db.ForeignKey('user.user_id', ondelete='CASCADE'))
    parent = db.relationship('User', backref='children', remote_side='User.user_id')
    referal_ext = db.Column(db.String(30), unique=True)
    referal_bonuses = db.Column(db.Float)
    # FE-1_

    def __init__(self, email, password, secret):
        self.email = email
        self.password = password
        self.secret = secret

        # FE-1 29.02.20
        self.activated = datetime.now()
        h = sha1(self.email.encode('utf-8')).hexdigest()[:10]
        self.referal_ext = f'?friend={h}' # FE-1 29.02.20

    # FE-1 29.02.20
    def __repr__(self):
        if self.parent:
            return f'<User {self.email} refered: {self.parent} ref_link: \
                {request.url_root}/{self.referal_ext}>'
        else:
            return f'<User {self.email}>'


class Exchange(db.Model):
    __tablename__ = 'exchange'

    exchange_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.user_id', ondelete='CASCADE'), nullable=False)
    user = db.relationship('User', back_populates='exchanges')
    name = db.Column(db.String(40), nullable=False)
    key = db.Column(db.String(256))
    secret = db.Column(db.String(256))
    password = db.Column(db.String(256))
    buytasks = db.relationship('BuyTask', back_populates='exchange', cascade='all, delete-orphan', passive_deletes=True)
    valid = db.Column(db.Boolean)

    def __init__(self, name, key, secret, password):
        self.name = name
        self.key = key
        self.secret = secret
        self.password = password
        self.valid = True


class BuyTask(db.Model):
    __tablename__ = 'buytask'

    buytask_id = db.Column(db.Integer, primary_key=True)
    exchange_id = db.Column(db.Integer, db.ForeignKey('exchange.exchange_id', ondelete='CASCADE'), nullable=False)
    exchange = db.relationship('Exchange', back_populates='buytasks')
    pair = db.Column(db.String(40), nullable=False)
    amount = db.Column(db.Numeric)
    interval = db.Column(db.Integer)
    next_buy = db.Column(db.DateTime, nullable=False)
    valid = db.Column(db.Boolean)

    def __init__(self, pair, amount, interval, next_buy):
        self.pair = pair
        self.amount = amount
        self.interval = interval
        self.next_buy = next_buy
        self.valid = True


class BuyLog(db.Model):
    __tablename__ = 'buylog'

    buylog_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.user_id', ondelete='CASCADE'), nullable=False)
    user = db.relationship('User', back_populates='buylogs')
    exchange = db.Column(db.String(40), nullable=False)
    pair = db.Column(db.String(40), nullable=False)
    executed = db.Column(db.DateTime, nullable=False)
    quote = db.Column(db.Numeric)
    base = db.Column(db.Numeric)

    def __init__(self, user_id, exchange, pair, executed, quote, base):
        self.user_id = user_id
        self.exchange = exchange
        self.pair = pair
        self.executed = executed
        self.quote = quote
        self.base = base

Собственно сам вопрос: Можно ли создать бд с помощью уже написанных моделей sqlalchemy и команд alembic? Заранее спасибо за ответ.


Ответы (0 шт):