python3 +ip2region 离线IP库地址文件实现毫秒级查询ip地址信息

序言

ip2region
ip2region - 离线的ip地址查询库,ip到地区的映射库,提供二进制,B树,内存搜索三种查询算法,查询速度非常快。
支持Java,PHP,C,Python,Nodejs,Golang,C#等语言,本文以Python为例

前期准备

  • 在GitHub上克隆下来源文件地址
    在这里插入图片描述- 下载完的文件:
    在这里插入图片描述
  • 解压文件分别找到ip2region-master\data\ip2region.dbip2region-master\binding\python\ip2Region.py

在这里插入图片描述
在这里插入图片描述

  • 创建自己的文件query_ip.py
from ip2Region import Ip2Region  # 此处导入的是刚才复制的py文件

db_file = './ip2region.db'  # 数据库文件路径


def ip_search(ip):
    searcher = Ip2Region(db_file)  # 实例化
    searcher.isip(ip)
    # 三种算法任选其一
    # data = searcher.btreeSearch(ip)  # B树
    # data = searcher.binarySearch(ip) #二进制
    data = searcher.memorySearch(ip)  # 内存
    print(data)
    print("%s|%s" % (ip, data["region"].decode('utf-8')))
    searcher.close()


if __name__ == "__main__":
    ip_search("123.205.32.32")
  • 目录
    在这里插入图片描述

  • 执行查询函数结果

在这里插入图片描述

注:查询方式选择
全部的查询客户端单次查询都在0.x毫秒级别,内置了三种查询算法
memory算法:整个数据库全部载入内存,单次查询都在0.1x毫秒内,C语言的客户端单次查询在0.00x毫秒级别。
binary算法:基于二分查找,基于ip2region.db文件,不需要载入内存,单次查询在0.x毫秒级别。
b-tree算法:基于btree算法,基于ip2region.db文件,不需要载入内存,单词查询在0.x毫秒级别,比binary算法更快。
任何客户端b-tree都比binary算法快,当然memory算法固然是最快的!

在这里插入图片描述
参考:python +ip2region 离线IP库地址文件实现
参考:lionsoul2014/ip2region

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
ip2region是一个准确率99.9%的离线IP地址定位,0.0x毫秒查询ip2region.db数据只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法。 Ip2region特性: 一、99.9%准确率 数据聚合了一些知名ip到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比经典的纯真IP定位准确一些。 二、标准化的数据格式 每条ip数据段都固定了格式: _城市Id|国家|区域|省份|城市|ISP_ 只有中国的数据精确到了城市,其他国家有部分数据只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家(请忽略前面的城市Id,个人项目需求)。 三、体积小 包含了全部的IP,生成的数据文件ip2region.db只有几MB,最小的版本只有1.5MB,随着数据的详细度增加数据的大小也慢慢增大,目前还没超过8MB。 四、查询速度快 全部的查询客户端单次查询都在0.x毫秒别,内置了三种查询算法: 1.memory算法:整个数据全部载入内存,单次查询都在0.1x毫秒内,C语言的客户端单次查询在0.00x毫秒别。 2.binary算法:基于二分查找,基于ip2region.db文件,不需要载入内存,单次查询在0.x毫秒别。 3.b-tree算法:基于btree算法,基于ip2region.db文件,不需要载入内存,单词查询在0.x毫秒别,比binary算法更快。 任何客户端b-tree都比binary算法快,当然memory算法固然是最快的! 五、多查询客户端的支持 已经集成的客户端有:java、C#、php、c、python、nodejs、php扩展(php5和php7)、golang、rust、lua、lua_c,nginx。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GC-757

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值