我正在编写一个简单的flaskrestfulapi,我需要在数据库中插入一些资源。我想让散列id在URL中可见,比如/api/resource/hSkR3V9aS
,而不是简单的自动递增id /api/resource/34
我的第一个想法是使用Hashids,从自动递增id
生成{INSERT
新的数据行,GET
,id
,然后{
第二次尝试是生成hash_id
(例如sha1),而不是从id
生成的,而是我传递给数据库的其他字段,并将其用作主键(去掉auto inc id),但我担心每次搜索和比较字符串而不是int会慢得多。在
实现基于hash_id
的URL和可接受的数据库SELECT
查询速度的最佳方法是什么?在
我认为这是最相关的stack question,但它不能回答我的问题。在
主要技术细节:python3.6、flask_mysqldb库、MySQL数据库 请让我知道如果我有一些信息,我会提供它。在
我想我自己在这个answer中找到了一个不错的解决方案
它是基于每个连接的,所以不必担心会有两行具有相同的ID
现在我将使用前面提到的Hashids,并将散列值返回给客户机。hashid也可以被解码,我会在每次收到包含这个hash id的url请求时进行解码。在
我还发现MongoDB数据库本身就产生了这种散列id,也许这对其他有类似问题的人来说是一个解决方案。在
相关问题 更多 >
编程相关推荐