Имя: Пароль:
IT
Админ
SQLite - кто как делает колонки типа GUID?
0 NorthWind
 
21.03.22
13:34
Добрый день!

Решил переделать на пайтон один свой древний проект, изначально сделанный на VBS. Проект использует БД (Access).
Думаю вместо него использовать SQLite как самую очевидную замену.
И есть вопрос...
В проекте интенсивно используются гуиды, в том числе в качестве PK и FK.
Насколько я понял, в SQLite 128-битных целых нет, в отличие от Access, где такой тип есть ("код репликации").
Соответственно, вопрос - кто как выкручивается? Строки?
1 Вафель
 
21.03.22
13:40
binary используй
2 acht
 
21.03.22
13:41
(0) https://stackoverflow.com/questions/18821265/proper-way-to-store-guid-in-sqlite
... These GUIDs are being stored as 16-byte binary blobs, in little-endian order.
3 NorthWind
 
21.03.22
13:41
собственно, крайней необходимости в переделке никакой нет, оно живое и работает уже 5 годков, но хочется на его примере разобраться в пайтоне, благо там есть и взаимодействие с сетью, и XML, и электронные подписи, и бидэ.
4 NorthWind
 
21.03.22
13:42
(1)(2) а оно умеет индексы, PK и FK?
5 NorthWind
 
21.03.22
13:42
обычно-то бинари не особо любят это дело
6 Djelf
 
21.03.22
13:43
Все верно, обычный блоб. Вот тут все описано: https://www.kittell.net/code/auto-increment-auto-generate-guid/
7 NorthWind
 
21.03.22
13:45
(6) Спасибо!
8 NorthWind
 
21.03.22
13:46
хм... удалось создать блоб как уникальный PK... о как бывает
9 Djelf
 
21.03.22
13:49
Для удобства можно создать вычисляемую колонку по блобу: https://www.sqlitetutorial.net/sqlite-generated-columns/
10 NorthWind
 
21.03.22
13:53
(9) Спасибо!
11 NorthWind
 
21.03.22
13:56
вообще, конечно, блоб - первичный ключ и уникальное значение выглядит диковато. Но работает, что характерно
12 Вафель
 
21.03.22
13:58
(11) так это маленький блоб. Он лежит на странице. Никакой разницы с другими типами нет
13 Вафель
 
21.03.22
13:59
Можно сказать так, что блоб это значение тип которого определяется на след. уровне (те в самом по)
14 Вафель
 
21.03.22
14:00
С точки зрения бд это дан проще чем типизированные значения
15 NorthWind
 
21.03.22
14:22
(14) тем не менее в большинстве "взрослых" БД на блоб есть ограничения.
16 Вафель
 
21.03.22
15:23
(15) во взрослых обычно разделяют блоб и бинари
17 ДедМорроз
 
21.03.22
19:18
(16) разделение по способу хранения,а он зависит от длины.
Кому не нравится binary,то можно char32 использовать или кодированное в base85 char20.