Форум сайта python.su
Доброго времени суток. В приложении есть 4 модели. При выполнении команды flask db upgrade, на чистой базе данных получаю следущую ошибку:
sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, “Table ‘short_urls.settings’ doesn't exist”)
[SQL: SELECT settings.id AS settings_id, settings.origin_url_min_len AS settings_origin_url_min_len, settings.origin_url_max_len AS settings_origin_url_max_len, settings.short_url_min_len AS settings_short_url_min_len, settings.short_url_max_len AS settings_short_url_max_len, settings.short_url_generate_url AS settings_short_url_generate_url, settings.first_name_min_len AS settings_first_name_min_len, settings.first_name_max_len AS settings_first_name_max_len, settings.last_name_min_len AS settings_last_name_min_len, settings.last_name_max_len AS settings_last_name_max_len, settings.nick_name_min_len AS settings_nick_name_min_len, settings.nick_name_max_len AS settings_nick_name_max_len, settings.password_min_len AS settings_password_min_len
FROM settings
LIMIT %(param_1)s]
(Background on this error at: https://sqlalche.me/e/20/f405)
Вот файл миграции модели settings:
“”"Create settings
Revision ID: bdbc71c02d5b
Revises: 5609b3afde7b
Create Date: 2023-12-14 20:34:34.779207
""" from alembic import op import sqlalchemy as sa revision = 'bdbc71c02d5b' down_revision = '5609b3afde7b' branch_labels = None depends_on = None def upgrade(): op.create_table('settings', sa.Column('id', sa.Integer(), nullable=False), sa.Column('origin_url_min_len', sa.Integer, nullable=False), sa.Column('origin_url_max_len', sa.Integer, nullable=False), sa.Column('short_url_min_len', sa.Integer, nullable=False), sa.Column('short_url_max_len', sa.Integer, nullable=False), sa.Column('short_url_generate_url', sa.Integer, nullable=False), sa.Column('first_name_min_len', sa.Integer, nullable=False), sa.Column('first_name_max_len', sa.Integer, nullable=False), sa.Column('last_name_min_len', sa.Integer, nullable=False), sa.Column('last_name_max_len', sa.Integer, nullable=False), sa.Column('nick_name_min_len', sa.Integer, nullable=False), sa.Column('nick_name_max_len', sa.Integer, nullable=False), sa.Column('password_min_len', sa.Integer(), nullable=False), sa.PrimaryKeyConstraint('id') ) op.execute(""" INSERT INTO settings (origin_url_min_len, origin_url_max_len, short_url_min_len, short_url_max_len, short_url_generate_url, first_name_min_len, first_name_max_len, last_name_min_len, last_name_max_len, nick_name_min_len, nick_name_max_len, password_min_len) VALUES (10, 512, 2, 15, 7, 2, 50, 2, 50, 2, 20, 8) """) def downgrade(): op.drop_table('settings')
Отредактировано slava_kv_32 (Дек. 31, 2023 12:33:34)
Офлайн
Так неплохо бы и модель показать
Офлайн
ZerG
Так неплохо бы и модель показать
class Settings(db.Model): _instance = None __tablename__ = "settings" id = db.Column(db.Integer, primary_key=True) origin_url_min_len = db.Column(db.Integer, nullable=False, default=10) origin_url_max_len = db.Column(db.Integer, nullable=False, default=512) short_url_min_len = db.Column(db.Integer, nullable=False, default=2) short_url_max_len = db.Column(db.Integer, nullable=False, default=15) short_url_generate_url = db.Column(db.Integer, nullable=False, default=7) first_name_min_len = db.Column(db.Integer, nullable=False, default=2) first_name_max_len = db.Column(db.Integer, nullable=False, default=50) last_name_min_len = db.Column(db.Integer, nullable=False, default=2) last_name_max_len = db.Column(db.Integer, nullable=False, default=50) nick_name_min_len = db.Column(db.Integer, nullable=False, default=2) nick_name_max_len = db.Column(db.Integer, nullable=False, default=20) password_min_len = db.Column(db.Integer, nullable=False, default=8) def __new__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super(Settings, cls).__new__(cls, *args, **kwargs) return cls._instance settings_params = Settings()
Отредактировано slava_kv_32 (Дек. 31, 2023 13:45:06)
Офлайн
Очень похоже что вы пропускаете какойто пункт из доки
https://github.com/miguelgrinberg/Flask-Migrate
flask db init flask db migrate flask db upgrade
Офлайн
ZerGСпасибо за помощь. Попробую.
Очень похоже что вы пропускаете какойто пункт из докиhttps://github.com/miguelgrinberg/Flask-Migrate
Офлайн
def __new__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super(Settings, cls).__new__(cls, *args, **kwargs) return cls._instance
Офлайн
RodegastТаблица с настройками.
Офлайн