Как сгенерировать код ha sh в качестве идентификатора? - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу сгенерировать уникальный код для идентификатора таблицы базы данных на основе значений некоторых столбцов:

def hash_code(channel, label, name, sense):
    hash_str = channel + label + name + sense
    return hash(hash_str), hash_str

Канал, метка, имя и смысл - это 4 столбца таблицы, и я хочу сгенерировать уникальный код как идентификатор каждой строки. У меня есть 2 вопроса:

  1. Почему при каждом запуске код ha sh, возвращаемый функцией, отличается для одной и той же строки?
  2. Является ли это хорошим способом создания идентификатора ?
  3. Кроме того, сгенерированный таким образом код очень длинный. Есть ли способ контролировать длину кода, сгенерированного функцией ha sh?

РЕДАКТИРОВАТЬ: я перешел по этой ссылке и получил эту функцию Как получить sh строку на 8 цифр? :

def hash_code(channel, label, name, sense):
    hash_str = channel + label + name + sense
    code = int(hashlib.sha256(hash_str.encode('utf-8')).hexdigest(), 16) % 10 ** 12
    return code, hash_str

При этом каждый раз генерируется один и тот же код. Однако одна проблема с этой функцией заключается в том, что большинство кодов состоят из 12 цифр, а некоторые - из 11 цифр. У меня всегда должно быть то же количество цифр, что и у моего идентификатора. Как вы можете видеть ниже, из которых 3 имеют длину 11-ди git:

749008239903
10086900916
691663154413
986996897689
692828652605
736205017520
92468781839
355015538836    

Есть ли способ исправить это?

...