Alembic Autogenerate неправильно пытается отбросить таблицу alembic_versionPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Alembic Autogenerate неправильно пытается отбросить таблицу alembic_version

Сообщение Anonymous »

Проблема
Я сталкиваюсь с странной проблемой с командой Atembic Autogenerate при настройке первоначальной миграции базы данных для базы данных Postgresql с публичной схемой.
При запуске Alembic Revision -Autogenerate -m public.alembic_version < /code> Таблица, сгенерированный сценарий миграции неправильно включает в себя: < /p> Это приводит к последующей головке обновления Alembic с помощью:

Код: Выделить всё

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "public.alembic_version" does not exist
[SQL: INSERT INTO public.alembic_version (version_num) VALUES ('xxxxxxxx') ...]
Это происходит потому, что функция eurngrade () выполняет ошибочную op.drop_table ('alembic_version') до того, как Alembic попытается записать успех миграции
. Настройка (соответствующие порции): < /p>

Код: Выделить всё

# --- Target Metadata and Schema ---
target_metadata = frontend_metadata # Use the imported metadata
target_schema = getattr(settings.FRONTEND_DB, 'SCHEMA', None) or 'public'

def run_migrations_offline() -> None:
"""Run migrations in 'offline' mode."""
url = get_url()

context.configure(
url=url,
target_metadata=target_metadata,
literal_binds=True,
dialect_opts={"paramstyle": "named"},
include_schemas=True,
version_table_schema=target_schema,
)

with context.begin_transaction():
context.run_migrations()

def run_migrations_online() -> None:
"""Run migrations in 'online' mode."""
configuration = config.get_section(config.config_ini_section, {})
configuration["sqlalchemy.url"] = get_url()

connectable = engine_from_config(
configuration,
prefix="sqlalchemy.",
poolclass=pool.NullPool,
)

with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
include_schemas=True,
version_table_schema=target_schema,
compare_type=True,
compare_server_default=True
)

with context.begin_transaction():
context.run_migrations()
< /code>
Я использую sqlalchemy с PostgreSQL. Модели базы данных определяются с более сложной настройкой:
в database.py 
:

Код: Выделить всё

class DatabaseConnection:
def __init__(self):
# Create metadata with proper schema
self.frontend_metadata = MetaData(schema=settings.FRONTEND_DB.SCHEMA)

# Create bases - these are the definitive base classes for models
self.FrontendBase = declarative_base(metadata=self.frontend_metadata)

# ... other initialization code ...

# Create global database instance
db = DatabaseConnection()

# Export commonly used items
FrontendBase = db.FrontendBase
frontend_metadata = db.frontend_metadata

__all__ = [
"db",
"FrontendBase",
"frontend_metadata",
# ...  other exports ...
]
Затем в base.py :

Код: Выделить всё

from src.services.vamos.database.database import FrontendBase

class BaseModel(FrontendBase):
"""Base model for all SQLAlchemy models."""
__abstract__ = True

# Model fields...
< /code>
 Что я проверил < /h2>

[*]alembic_version
- это не , определено в моих моделях sqlalchemy/metadata
[*] Я подтвержден target_metadata не содержит какого -либо определения для Alembic_version
[*] оба Target_schema и версии Если я вручную удаляю линию op.drop_table ('alembic_version') < /code> из сгенерированного сценария, миграция работает отлично < /li>
< /ol>
Вопросы < /h2>

- это известный вопрос с алембиком? Должен ли он игнорировать таблицу alembic_version по умолчанию?
Есть ли что -то не так с моей конфигурацией, которая вызывает такое поведение? /> Версия Alembic: 1.15.1 < /li>
SQLalchemy Версия: 2.0.39 < /li>
Python: 3.10.11 < /li>
База данных: postgresql 17.2 (aws rds) < /li>
os: windesql 17.2 (aws rds) < /li>


/> Любая помощь будет оценена - я бы хотел понять, делаю ли я что -то не так или это действительно ошибка с Алембиком. < /p>

Подробнее здесь: https://stackoverflow.com/questions/795 ... sion-table
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Версия Alembic --autogenerate всегда обнаруживает новую таблицу вместо обнаружения новых столбцов.
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Почему wp_get_theme()->get('Version') работает как аргумент wp_enqueue_styles, но не $version = wp_get_theme()->get('Ver
    Anonymous » » в форуме Php
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Python3 Venv Version и System Version?
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Python3 Venv Version и System Version?
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при попытке запустить команду: перегонный куб --autogenerate -m "описание"
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»