Будьте в спящем режиме: Как сделать, в спящем режиме, удаляют записи из дочерней таблицы при удалении родителя, если ребенок связан для порождения с many-one?

Как отмечается в комментарии, проблема печати, скорее всего, связана с тем, как ваш терминал обрабатывает отображение символов Юникода. Вы можете проверить, соответствует ли символ ожидаемому, кодируя его в utf-8 байтов или используя встроенный ord() .

Для заданной строки, представляющей один символ Unicode, вернуть целое число, представляющее кодовую точку Unicode для этого символа. Например, ord ('a') возвращает целое число 97, а ord ('€') (знак евро) возвращает 8364. Это обратное значение для chr () .

blockquote>

Например,

Python 3.7.1 (default, Oct 23 2018, 19:19:42)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.1.1 -- An enhanced Interactive Python. Type '?' for help.

IIn [1]: s = "ˈtau̯rum"                                                                                                 

In [2]: print(s)
ˈtau̯rum

In [3]: for c in s:
   ...:     print(c, c.encode('utf-8'), ord(c))
   ...:
ˈ b'\xcb\x88' 712
t b't' 116
a b'a' 97
u b'u' 117
̯  b'\xcc\xaf' 815
r b'r' 114
u b'u' 117
m b'm' 109

5
задан serg 11 December 2008 в 16:45
поделиться

1 ответ

Несколько опций:

  • добавьте one-many к родителю с каскадным удалением, но смягчите потерю производительности с помощью ленивой загрузки.

  • используйте Быть в спящем режиме Перехватчик (или аспект в среде AOP), чтобы обнаружить родительские рекордные удаления и удалить дочерние элементы.

Лично я одобрил бы первую опцию, поскольку она позволяет Вашей модели данных более тесно отразить реальные отношения в Ваших данных.

Править: существует третья опция, но это не приятно - используют триггер базы данных, и сбрасывают Ваш Быть в спящем режиме кэш (или используют сессию некэширования).

5
ответ дан 14 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: