跳转到主要内容

MaxMind DB格式的读取器

项目描述

描述

这是一个用于读取MaxMind DB文件的Python模块。该模块包括一个纯Python读取器和可选的C扩展。

MaxMind DB是一种二进制文件格式,它存储由IP地址子网(IPv4或IPv6)索引的数据。

安装

要安装maxminddb,键入

$ pip install maxminddb

如果您无法使用pip,您还可以从源目录使用easy_install

$ easy_install .

安装程序将尝试构建C扩展。如果这失败,模块将回退到纯Python实现。

使用方法

要使用此模块,您必须首先下载或创建一个MaxMind DB文件。我们提供免费的GeoLite2数据库。这些文件必须使用gunzip解压缩。

在获取数据库并导入模块后,将路径或文件描述符(在MODE_FD的情况下)作为第一个参数调用open_database,以打开数据库。可选地,您可以将模式作为第二个参数传递。这些模式由maxminddb导出。有效的模式有

  • MODE_MMAP_EXT - 使用带有内存映射的C扩展。

  • MODE_MMAP - 从内存映射中读取。纯Python。

  • MODE_FILE - 将数据库作为标准文件读取。纯Python。

  • MODE_MEMORY - 将数据库加载到内存中。纯Python。

  • MODE_FD - 从文件描述符加载数据库到内存。纯Python。

  • MODE_AUTO - 按顺序尝试MODE_MMAP_EXTMODE_MMAPMODE_FILE。默认。

注意:当使用MODE_FD时,确保文件描述符正确关闭的责任在于调用者。调用者可以在创建Reader对象后立即关闭文件描述符。

open_database函数返回一个Reader对象。要查找IP地址,请使用该对象的get方法。该方法将返回数据库中对应IP地址的值(例如,GeoIP2/GeoLite2数据库的字典)。如果数据库不包含该IP地址的记录,则该方法将返回None

如果您还希望检索记录的前缀长度,请使用get_with_prefix_len方法。这将返回一个包含记录和与记录相关联的网络前缀长度的元组。

您还可以遍历整个数据库。Reader类实现了返回迭代器的__iter__方法。该迭代器产生包含网络和记录的元组。

示例

>>> import maxminddb
>>>
>>> with maxminddb.open_database('GeoLite2-City.mmdb') as reader:
>>>
>>>     reader.get('152.216.7.110')
{'country': ... }
>>>
>>>     reader.get_with_prefix_len('152.216.7.110')
({'country': ... }, 24)
>>>
>>>     for network, record in reader:
>>>         ...

异常

如果数据库损坏或无效,则模块将返回InvalidDatabaseError。如果在IPv4数据库中查找无效的IP地址或IPv6地址,将抛出ValueError

要求

此代码需要Python 3.8+。不支持旧版本。C扩展需要CPython。

版本控制

MaxMind DB Python模块使用语义版本控制

支持

请使用GitHub问题跟踪器报告与此代码相关的问题

如果您遇到的问题与MaxMind服务有关,但不是针对此API的特定问题,请联系MaxMind支持以获取帮助。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

maxminddb-2.6.2.tar.gz (181.3 kB 查看哈希值)

上传时间: 源代码

构建的分发

maxminddb-2.6.2-pp310-pypy310_pp73-win_amd64.whl (36.5 kB 查看哈希值)

上传时间: PyPy Windows x86-64

maxminddb-2.6.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.9 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (37.2 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (38.4 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl (33.6 kB 查看哈希值)

上传时间: PyPy macOS 11.0+ ARM64

maxminddb-2.6.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (33.8 kB 查看哈希值)

上传时间: PyPy macOS 10.9+ x86-64

maxminddb-2.6.2-pp39-pypy39_pp73-win_amd64.whl (36.5 kB 查看哈希值)

上传时间: PyPy Windows x86-64

maxminddb-2.6.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.9 kB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (37.2 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (38.4 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl (33.6 kB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

maxminddb-2.6.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (33.8 kB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

maxminddb-2.6.2-pp38-pypy38_pp73-win_amd64.whl (36.5 kB 查看哈希值)

上传于 PyPy Windows x86-64

maxminddb-2.6.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.9 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (37.2 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (38.4 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl (33.6 kB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

maxminddb-2.6.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (33.8 kB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

maxminddb-2.6.2-cp312-cp312-win_amd64.whl (36.6 kB 查看哈希值)

上传于 CPython 3.12 Windows x86-64

maxminddb-2.6.2-cp312-cp312-win32.whl (34.7 kB 查看哈希值)

上传于 CPython 3.12 Windows x86

maxminddb-2.6.2-cp312-cp312-musllinux_1_2_x86_64.whl (92.2 kB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.2+ x86-64

maxminddb-2.6.2-cp312-cp312-musllinux_1_2_i686.whl (91.1 kB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.2+ i686

maxminddb-2.6.2-cp312-cp312-musllinux_1_2_aarch64.whl (92.3 kB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.2+ ARM64

maxminddb-2.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (89.5 kB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (90.0 kB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (87.6 kB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-cp312-cp312-macosx_11_0_arm64.whl (35.0 kB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

maxminddb-2.6.2-cp312-cp312-macosx_10_9_x86_64.whl (35.2 kB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

maxminddb-2.6.2-cp311-cp311-win_amd64.whl (36.5 kB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

maxminddb-2.6.2-cp311-cp311-win32.whl (34.5 kB 查看哈希值)

上传于 CPython 3.11 Windows x86

maxminddb-2.6.2-cp311-cp311-musllinux_1_2_x86_64.whl (90.5 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ x86-64

maxminddb-2.6.2-cp311-cp311-musllinux_1_2_i686.whl (90.2 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ i686

maxminddb-2.6.2-cp311-cp311-musllinux_1_2_aarch64.whl (91.3 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ ARM64

maxminddb-2.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (88.0 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (88.8 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (86.6 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-cp311-cp311-macosx_11_0_arm64.whl (34.8 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

maxminddb-2.6.2-cp311-cp311-macosx_10_9_x86_64.whl (34.9 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

maxminddb-2.6.2-cp310-cp310-win_amd64.whl (36.5 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

maxminddb-2.6.2-cp310-cp310-win32.whl (34.5 kB 查看哈希值)

上传于 CPython 3.10 Windows x86

maxminddb-2.6.2-cp310-cp310-musllinux_1_2_x86_64.whl (90.4 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

maxminddb-2.6.2-cp310-cp310-musllinux_1_2_i686.whl (90.1 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ i686

maxminddb-2.6.2-cp310-cp310-musllinux_1_2_aarch64.whl (91.1 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ ARM64

maxminddb-2.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (87.7 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (88.5 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (86.4 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-cp310-cp310-macosx_11_0_arm64.whl (34.8 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

maxminddb-2.6.2-cp310-cp310-macosx_10_9_x86_64.whl (34.9 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

maxminddb-2.6.2-cp39-cp39-win_amd64.whl (36.5 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

maxminddb-2.6.2-cp39-cp39-win32.whl (34.5 kB 查看哈希值)

上传于 CPython 3.9 Windows x86

maxminddb-2.6.2-cp39-cp39-musllinux_1_2_x86_64.whl (90.1 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ x86-64

maxminddb-2.6.2-cp39-cp39-musllinux_1_2_i686.whl (89.8 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ i686

maxminddb-2.6.2-cp39-cp39-musllinux_1_2_aarch64.whl (90.8 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ ARM64

maxminddb-2.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (87.5 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (88.3 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (86.2 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-cp39-cp39-macosx_11_0_arm64.whl (34.8 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

maxminddb-2.6.2-cp39-cp39-macosx_10_9_x86_64.whl (34.9 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

maxminddb-2.6.2-cp38-cp38-win_amd64.whl (36.5 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

maxminddb-2.6.2-cp38-cp38-win32.whl (34.5 kB 查看哈希值)

上传于 CPython 3.8 Windows x86

maxminddb-2.6.2-cp38-cp38-musllinux_1_2_x86_64.whl (91.1 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ x86-64

maxminddb-2.6.2-cp38-cp38-musllinux_1_2_i686.whl (90.9 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ i686

maxminddb-2.6.2-cp38-cp38-musllinux_1_2_aarch64.whl (91.7 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ ARM64

maxminddb-2.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (88.8 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

maxminddb-2.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (89.7 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

maxminddb-2.6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (87.5 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

maxminddb-2.6.2-cp38-cp38-macosx_11_0_arm64.whl (34.8 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

maxminddb-2.6.2-cp38-cp38-macosx_10_9_x86_64.whl (34.9 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

由以下机构支持