【问题标题】:Is it possible to generate a random and unique 5 digit ID for my sqlite database?是否可以为我的 sqlite 数据库生成一个随机且唯一的 5 位 ID?
【发布时间】:2014-01-16 07:08:06
【问题描述】:

我想为我的 db 表中的每个条目生成一个 ID。它看起来像这样:nov45833。

前三个字符是我的表名的唯一字符,nov 代表小说,com 代表漫画等。接下来的 5 位数字是随机生成的数字。如果我想删除该条目,我只需调用该条目的存储 ID(例如 .../delete/nov45833)即可。我还希望 ID 是唯一的(所以我不会删除错误的条目)。

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

我必须在服务器端执行此操作还是使用 JavaScript?我正在使用 Python,尤其是 Flask。如果您有任何问题或认为这很愚蠢,请告诉我。谢谢你。我很缺乏经验。

【问题讨论】:

  • 为什么随机而不是序列? (即每次给予+1)
  • 在插入之前生成id并在数据库中检查。
  • 也许你想检查 python uuid library
  • 为什么不直接让数据库生成一个ID,然后单独存储类型呢?如果您不希望 URL 直接映射到 ID,则它们不必直接映射。
  • @SeanVieira 我还没有学会如何删除帖子,所以我认为这是标准程序。似乎只使用数据库的自动增量会更容易。谢谢你们的帮助。

标签: javascript python database flask flask-sqlalchemy


【解决方案1】:

随机取 5 位数字会导致重复使用相同的 id 两次(数字空间小)

您可以执行以下解决方案之一:

  1. 使用更大的id空间,你可以使用标准的uuid,看起来像12345678-1234-5678-1234-567812345678。你可以看看如何使用它How to create a GUID/UUID in Python

  2. 你可以按一定的顺序给id,比如每次+1,这样可以保证在达到最大值之前你不会重复使用id。

  3. 您还可以使用@Satish Sharma 建议,每次检查 id 是否已经在数据库中。但是,我认为这不是一个好的解决方案。在我看来,每次插入都会产生不必要的大开销。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2015-02-01
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多