是否有可能为我的sqlite数据库生成一个随机且唯一的5位数字ID?

3

我想为我的数据库表中的每个条目生成一个ID。它应该长这样:nov45833。

前三个字符是与我的表名唯一相关的,例如nov表示小说,com表示漫画等。接下来的5个数字是随机生成的。如果我想要删除这个条目,我只需调用存储的ID(例如.../delete/nov45833)即可完成。我还希望这些ID是唯一的(以免删除错误的条目)。

我的原始计划是,在填写表单时单击一个按钮,生成一个随机数,并在指定的表单字段中显示该值。然后我将按照预期完成表格。这是一个示例:Codepen

我需要在服务器端或使用JavaScript执行此操作吗?我正在使用Python,特别是Flask。如果您有任何问题或认为这很愚蠢,请告诉我。谢谢。我非常缺乏经验。


为什么要使用随机而不是顺序?(例如,每次给出<last_id>+1) - Elisha
在插入数据之前,生成ID并在数据库中检查它。 - Satish Sharma
也许你想要检查一下 Python 的 uuid 库。 - Elisha
为什么不让数据库生成一个ID,然后单独存储类型呢?如果您不想要,那么您的URL不必直接映射到ID。 - Sean Vieira
@SeanVieira,我还没学会删除帖子的方法,所以我认为这是标准程序。看来直接使用数据库的自增长会更容易一些。感谢大家的帮助。 - user2986242
1个回答

1
随机选择5位数字可能会导致重复使用相同的id(数字空间较小)。
您可以采取以下解决方案之一:
1. 使用更大的id空间,您可以使用标准uuid,它看起来像这样:12345678-1234-5678-1234-567812345678。您可以查看如何在Python中使用它的方法How to create a GUID/UUID in Python。 2. 按照某种顺序分配id,例如每次都加1,这样可以确保您不会重复使用id,直到达到最大值为止。 3. 您也可以使用@Satish Sharma的建议,每次检查id是否已经存在于数据库中。但是,我认为这不是一个好的解决方案。对于每次插入来说,这似乎是一个不必要的大开销。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接