Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 31, 2023 12:30:25

slava_kv_32
Зарегистрирован: 2023-07-11
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask. SQLAlchemy.Ошибка sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

Доброго времени суток. В приложении есть 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)

Офлайн

#2 Дек. 31, 2023 13:03:25

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2605
Репутация: +  62  -
Профиль   Отправить e-mail  

Flask. SQLAlchemy.Ошибка sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

Так неплохо бы и модель показать



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Дек. 31, 2023 13:44:44

slava_kv_32
Зарегистрирован: 2023-07-11
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask. SQLAlchemy.Ошибка sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

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)

Офлайн

#4 Дек. 31, 2023 14:14:04

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2605
Репутация: +  62  -
Профиль   Отправить e-mail  

Flask. SQLAlchemy.Ошибка sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

Очень похоже что вы пропускаете какойто пункт из доки
https://github.com/miguelgrinberg/Flask-Migrate

 flask db init
flask db migrate
flask db upgrade

Я бы попробовал пример с гита а потом на вашем проекте и сравнить результаты
а то очено похоже то вы делаете по одной дкбильной статье с хабра где афтор дебил



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Дек. 31, 2023 18:02:48

slava_kv_32
Зарегистрирован: 2023-07-11
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask. SQLAlchemy.Ошибка sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

ZerG
Очень похоже что вы пропускаете какойто пункт из докиhttps://github.com/miguelgrinberg/Flask-Migrate
Спасибо за помощь. Попробую.

Офлайн

#6 Дек. 31, 2023 18:35:05

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2707
Репутация: +  182  -
Профиль   Отправить e-mail  

Flask. SQLAlchemy.Ошибка sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

 def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super(Settings, cls).__new__(cls, *args, **kwargs)
        return cls._instance

Кокой смысл из модели сиглтон делать?
PS Я ORM-ами не пользуюсь мне просто интересно.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#7 Янв. 4, 2024 13:14:07

slava_kv_32
Зарегистрирован: 2023-07-11
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask. SQLAlchemy.Ошибка sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

Rodegast
Таблица с настройками.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version