Size: a a a

2021 April 30

SM

Serge Matveenko in SPb Python
источник

S

Serg in SPb Python
Спасибо, Сергей... 💪😎
источник

ВО

Владимир Остров... in SPb Python
Привет. Занимается кто нибудь сетевой инженерией?
источник

RK

Ruslan Krivoshein in SPb Python
https://t.me/ntwrk тут занимаются
источник

ВО

Владимир Остров... in SPb Python
Спасибо
источник

К2

Кисель 2167 in SPb Python
Привет, подскажите пожалуйста, как написать миграцию на alembic (postgresql), которая бы меняла бы старый ForeignKey на новый ForeignKey (к другой таблице), тип поля тоже меняется

Я написал такое: https://pastebin.com/v0MQWC7t , но оно не сработало. Думаю в аргумент schema я вообще не то передавал.

Нашёл такой ответ на stackoverflow (click), подходит ли мне это?

(По моделям: у меня раньше был ForeignKey к BotXUser.user_huid, а теперь я добавил промежуточную модель User внутри которой связь с BotXUser OneToOne, и мне в таблице tasks необходимо вместо ForeignKey к BotXUser сделать ForeignKey к User.)

Можно ли это сделать, чтобы на каждую старую ссылку создался объект в таблице User, а в Tasks подставилась ссылка на эту модель User?
источник

DG

Donat Gorbachev in SPb Python
Я бы сделал через sql и execute: CREATE TABLE {table_name}_temp AS SELECT ... FROM {table_name} JOIN ... потом бы дропнул старую таблицу ({table_name}) и переименовал бы новую ({table_name}_temp -> {table_name}). Такие связи быстро разруливаются только запросом с джоинами. Аналогично бы сделал и для downgrade.
источник

A

Alexander in SPb Python
Дропни старый foreign key. Поменяй тип поля, создай новый foreign key
источник

DG

Donat Gorbachev in SPb Python
Как я понял, надо еще будет прописать значение. Тут либо все одним запросом разруливать (как я описал выше), либо создать новый foreign key, пройтись запросом UPDATE, чтобы по джоину заполнить новый foreign key значением, а уже только после этого дропать старый foreign key.
источник

К2

Кисель 2167 in SPb Python
Разве я тут не потеряю значения в этом поле? Что будет в этом поле после применении миграции?
источник

A

Alexander in SPb Python
Во-первых, не надо здесь вообще питон использовать, сделай на голом SQL, получится сильно проще и понятнее.
Во-вторых, значения не потеряются, т.к. FK - это всего лишь индекс между таблицами.
Ну и в-третьих, обязательно сделай бэкап перед всеми манипуляциями, чтобы можно было откатить всё назад.
источник

A

Alexander in SPb Python
что такое миграция - это всего лишь набор команд на SQL
источник

DG

Donat Gorbachev in SPb Python
+1, пара строчек sql и все готово)
источник

К2

Кисель 2167 in SPb Python
Можешь проверить правильность sql запросов, пожалуйста? https://pastebin.com/7AF3cbLc
источник

A

Alexander in SPb Python
Точки с запятой не забывай.
Также, не знаю как в pg, но в мускуле помимо самого fk надо ещё явно удалить индекс с поля в таблице. Он автоматически не удаляется.
Лучше всего создать тестовую бд, в неё скопировать таблицы и поэкспериментировать с нужными операциями
источник

К2

Кисель 2167 in SPb Python
окей, спасибо, пойду потыкаюсь и еще погуглю
источник

A

Alexander in SPb Python
И самое главное - перед операциями над боевыми таблицами, сделать их бэкап
источник

М(

Менеджер (Или типа т... in SPb Python
x = int(input())
if 3000 >= x >= 1900:
if x % 400 == 0:
   print ('Високосный')
else:
   print ('Обычный')
источник

М(

Менеджер (Или типа т... in SPb Python
как сделать
источник

М(

Менеджер (Или типа т... in SPb Python
чтобы сначала 1 условие проверялось
источник