gpt4 book ai didi

python - 根据自增id在数据库中插入hash id(快速搜索需要吗?)

转载 作者:行者123 更新时间:2023-11-29 10:35:18 48 4
gpt4 key购买 nike

我正在编写一个简单的 Flask-restful API,我需要将一些资源插入数据库。我希望哈希 ID 在 URL 中可见,如 /api/resource/hSkR3V9aS 而不仅仅是简单的自动递增 id /api/resource/34

我的第一个想法是使用 Hashids只需从自动增量 id 生成 hash_id 并将这两个值存储在数据库中,但问题是我必须先 INSERT新数据行,GET id,然后UPDATE hash_id 字段。

第二次尝试是不是从 id 而是从我传递给数据库的其他一些字段生成 hash_id (例如 sha1),并将其用作主键(获取摆脱 auto-inc id),但我担心每次搜索和比较字符串而不是 int 会慢得多。

实现所需的基于 hash_id 的 URL 以及可接受的数据库 SELECT 查询速度的最佳方式是什么?

我认为这是最相关的stack question ,但它没有回答我的问题。

主要技术细节:Python 3.6、flask_mysqldb库、MySQL数据库如果我遗漏了一些信息,请告诉我,我会提供。

最佳答案

我想我自己在这个answer中找到了一个不错的解决方案

Use cursor.lastrowid to get the last row ID inserted on the cursor object, or connection.insert_id() to get the ID from the last insert on that connection.

它是基于每个连接的,因此不用担心我会有 2 行具有相同的 ID。

我现在将使用我自己之前提到的 Hashids并将哈希值返回给客户端。哈希值也可以被解码,每次我从包含此哈希 ID 的 url 收到请求时,我都会执行此操作。

我还发现MongoDB数据库自己生成这种哈希ID,也许这是其他有类似问题的解决方案。

关于python - 根据自增id在数据库中插入hash id(快速搜索需要吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46524420/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com