Upgrade Pony to version 0.8

The Pony ORM release 0.8 offers Pony migration tool. Besides this it introduces some API changes and the principle of building names for tables, columns, indexes of foreign keys in some cases.

API changes

What is changing: bind, generate_mapping => connect получает keyword args, check_tables, create_tables, allow_auto_upgrade

еще команда - migrate получает те же самые аргументы

Старый способ (bind, generate_mapping продолжают работать)

Database structure changes

Many-to-many relationship intermediate table names

Меняются имена таблиц для связей многие-ко-многим В старой версии - имя_сущности1_имя_сущности2 В новой версии - имя_сущности1_имя_атрибута_коллекции_в_этой_сущности

Person Apartment

В одном случае названия таблиц apartment_person apartment_person_2

Теперь apartment_owners apartment_tenants

Чтобы перейти на новую версию Пони нам нужно переименовать таблицы и также переименовать foreign_keys и index, потому что они содержат в себе имя таблицы.

Если вы не хотите, чтобы ваши таблицы были переименованы укажите в связи m-m имя промежуточной таблицы

Column names

В ряде случаев изменяются имена колонок в таблицах Базы данных имеют ограничение на число символов PG - 63, Oracle - 31 Раньше Пони обрезала имя таблицы, колонки, индекса или foreign key, чтобы база не ругалась В этом случае, если есть два достаточно длинных имени и их начало совпадает, могли появиться дубликаты имени.

Сейчас, чтобы это не происходило, если имя превышает максимально возможную длину, Пони его обрезает и добавляет 8 символов md5 хэша

SOME_VERY_VERY_LONG_ATTR_NAME по старому - SOME_VERY_VERY_LONG_ATTRIBUTE_ по новому - SOME_VERY_VERY_LONG_A_C50C1946

Upgrade to Pony 0.8

Если в generate_mapping добавите allow_auto_upgrade - Пони все переименует сама: таблицы колонки индексы foreign keys

Сам принцип не изменился, но имена индексов и foreign keys формируются на основе имени таблиц. Так как меняется принцип создания имени таблиц для m-m, то в этом случае, названия индексов и фк тоже должны быть изменены.

После того как вы проапгрейдите Пони на 0.8, старой Пони вы уже пользоваться не сможете Поэтому перед переходом вы можете сделать бэкап базы, чтобы в случае чего можно было откатиться

Эту опцию нужно применить один раз