根据自动增量id在数据库中插入哈希id(快速搜索需要吗?)

2024-09-28 10:12:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个简单的flaskrestfulapi,我需要在数据库中插入一些资源。我想让散列id在URL中可见,比如/api/resource/hSkR3V9aS,而不是简单的自动递增id /api/resource/34

我的第一个想法是使用Hashids,从自动递增id生成{},并将这两个值都存储在数据库中,但问题是,我必须首先INSERT新的数据行,GETid,然后{}字段{}。在

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

实现基于hash_id的URL和可接受的数据库SELECT查询速度的最佳方法是什么?在

我认为这是最相关的stack question,但它不能回答我的问题。在

主要技术细节:python3.6、flask_mysqldb库、MySQL数据库 请让我知道如果我有一些信息,我会提供它。在


Tags: 数据apiid数据库urlgethash资源
1条回答
网友
1楼 · 发布于 2024-09-28 10:12:33

我想我自己在这个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.

它是基于每个连接的,所以不必担心会有两行具有相同的ID

现在我将使用前面提到的Hashids,并将散列值返回给客户机。hashid也可以被解码,我会在每次收到包含这个hash id的url请求时进行解码。在

我还发现MongoDB数据库本身就产生了这种散列id,也许这对其他有类似问题的人来说是一个解决方案。在

相关问题 更多 >

    热门问题