Если вы хотите сделать всё на ООП, то вам надо представить и описать при помощи классов объекты, с которыми вы работаете, например: Guest, GuestBook, GuestBookFile, возможно еще какие-то.
Каждый класс должен содержать в себе атрибуты, описывающие экземпляры класса, и методы, которыми можно что-то делать с экземплярами класса.
Иначе не стоит и связываться с ООП, слепить всё на функциях.
Я Наташу (natasha) использовал как-то для разбора текста договора, оно четко отлавливало ФИО, должности, наименования предприятий, возвращало с учетом падежей.
Но иногда, 1 на полсотни, косячило с каким-либо ФИО. Например, видело имя и отчество, не видело фамилии.
Алексей Уколов, не то, чтобы я был круто против… но и в чем путаться - не понимаю.
По-моему, primary key решает свою задачу, в известной степени служебную, а связь - это связь, другая задача. И мне как-то не хочется их смешивать в одном поле.
Каждому полю - своя задача.
Совместить их - возможно, даст экономию на гигантских объемах, однако в данном случае экономия на спичках…
Но спорить не буду точно, как ранее я сказал, это вполне допустимо.
Я глубоко не вчитывался в код, но по верхам - primary id у каждой таблицы должен быть свой, а дублировать id с users и делать его primary и связывать по нему же с users - это как-то кривовато. Хотя не запрещено вроде…
Вообще, есть 6 нормальных форм, и по-хорошему надо искать баланс, скажем где-нибудь возле 3-й формы, а прям до максимального уровня задирать (т.е. по сути дробить до мелочей прям)- это обычно накладно и по ресурсам и по количеству кода.
Где-то можно и пойти на компромисс.
P.s. следует отметить, что я довольно диванный теоретик, практики с БД маловато.
Требования для NumPy 1.18.4 (release notes) – 3 May 2020.
The Python versions supported in this release are 3.5-3.8. Downstream
developers should use Cython >= 0.29.15 for Python 3.8 support and
OpenBLAS >= 3.7 to avoid errors on the Skylake architecture.
Как видим, 3.11 формально не входит в поддерживаемые версии.
Начните с чтения местного Регламента.
Когда вы регистрировались, вы обещали выполнять Регламент. Ваше сообщение нарушило сразу несколько параграфов Регламента -2.2, 3.1, 3.4, 3.6, 5.12 и др.
Если вы будете продолжать нарушать Регламент, ваши вопросы могут быть удалены, а аккаунт заблокирован модераторами временно или навсегда.
Будьте благоразумны.
У вас в функции три раза происходит цикл и из них два раза цикл в цикле. Это многовато. Плюс внутри одного такого цикла-матрешки еще и множество вызовов if, которые довольно дорогие.
Вам надо подумать, как это оптимизировать.
Кроме того
, у вас одна гигантская функция, с которой работать чудовищно неудобно, ее надо бы разделить на несколько функций; кроме того, названия переменных и функции неудобные и невнятные, читать код трудно. Это не особо влияет на скорость, но копаться в этом вообще не хочется.