Skip to content

synodriver/pyip2region

Repository files navigation

✨ pyip2region ✨

The python binding for ip2region

pypi python implementation wheel license action

使用方式

完全基于文件的查询

from ip2region import Searcher, VectorIndex, Header, Version
header = Header.from_file(r".\ip2region_v6.xdb")
version = Version.from_header(header)
# 备注:并发使用,每一个线程需要单独定义并且初始化一个 searcher 查询对象,或者加锁
searcher = Searcher.from_file(version, r"E:\pyproject\pyip2region\tests\ip2region_v6.xdb")
result = searcher.search_by_string("2001:0:2851:b9f0:3866:13a2:846f:c23b")
print(result)

缓存 VectorIndex 索引

from ip2region import Searcher, VectorIndex, Header, Version
header = Header.from_file(r".\ip2region_v4.xdb")
version = Version.from_header(header)
index = VectorIndex.from_file(r".\ip2region_v4.xdb")
searcher = Searcher.from_index(version, r".\ip2region_v4.xdb", index)
result = searcher.search_by_string("1.1.1.1")
print(result)

缓存整个 xdb 数据

from ip2region import Searcher, VectorIndex, Header, Version

header = Header.from_file(r".\ip2region_v4.xdb")
version = Version.from_header(header)
with open(r".\ip2region_v4.xdb", "rb") as f:
    data = f.read()
searcher = Searcher.from_buffer(version, data)
result = searcher.search_by_string("1.1.1.1")
print(result)

注意:

多线程模式下,只有纯内存的才是线程安全的,其他都需要用户自己加锁加锁,程序中没有任何机制保证线程安全

About

python binding for ip2region

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors