La interfície canvia força respecte a l'antiga. Per exemple, per saber el país, provem-ho primer amb la base de dades de països:
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import geoip2.database
>>> geoip = geoip2.database.Reader('/var/lib/GeoIP/GeoLite2-Country.mmdb')
>>> geoip.country('181.197.182.192')
geoip2.models.Country({'traits': {'ip_address': '181.197.182.192'}, u'country': {u'geoname_id': 3703430L, u'iso_code': u'PA', u'names': {u'ru': u'\u041f\u0430\u043d\u0430\u043c\u0430', u'fr': u'Panama', u'en': u'Panama', u'de': u'Panama', u'zh-CN': u'\u5df4\u62ff\u9a6c', u'pt-BR': u'Panam\xe1', u'ja': u'\u30d1\u30ca\u30de', u'es': u'Panam\xe1'}}, u'continent': {u'geoname_id': 6255149L, u'code': u'NA', u'names': {u'ru': u'\u0421\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0410\u043c\u0435\u0440\u0438\u043a\u0430', u'fr': u'Am\xe9rique du Nord', u'en': u'North America', u'de': u'Nordamerika', u'zh-CN': u'\u5317\u7f8e\u6d32', u'pt-BR': u'Am\xe9rica do Norte', u'ja': u'\u5317\u30a2\u30e1\u30ea\u30ab', u'es': u'Norteam\xe9rica'}}, u'registered_country': {u'geoname_id': 3703430L, u'iso_code': u'PA', u'names': {u'ru': u'\u041f\u0430\u043d\u0430\u043c\u0430', u'fr': u'Panama', u'en': u'Panama', u'de': u'Panama', u'zh-CN': u'\u5df4\u62ff\u9a6c', u'pt-BR': u'Panam\xe1', u'ja': u'\u30d1\u30ca\u30de', u'es': u'Panam\xe1'}}}, ['en'])
>> geoip.country('181.197.182.192').country
geoip2.records.Country(geoname_id=3703430L, confidence=None, _locales=['en'], names={u'ru': u'\u041f\u0430\u043d\u0430\u043c\u0430', u'fr': u'Panama', u'en': u'Panama', u'de': u'Panama', u'zh-CN': u'\u5df4\u62ff\u9a6c', u'pt-BR': u'Panam\xe1', u'ja': u'\u30d1\u30ca\u30de', u'es': u'Panam\xe1'}, iso_code=u'PA', is_in_european_union=False)
>>> geoip.country('181.197.182.192').country.iso_code
u'PA'
>>> geoip.country('155.138.192.58').country.iso_code
u'US'
O bé amb a de ciutats:
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import geoip2.database
>>> geoip = geoip2.database.Reader('/var/lib/GeoIP/GeoLite2-City.mmdb')
>>> geoip.city('155.138.192.58').country
geoip2.records.Country(geoname_id=6252001L, confidence=None, _locales=['en'], names={u'ru': u'\u0421\u0428\u0410', u'fr': u'\xc9tats-Unis', u'en': u'United States', u'de': u'USA', u'zh-CN': u'\u7f8e\u56fd', u'pt-BR': u'Estados Unidos', u'ja': u'\u30a2\u30e1\u30ea\u30ab\u5408\u8846\u56fd', u'es': u'Estados Unidos'}, iso_code=u'US', is_in_european_union=False)
>>> geoip.city('155.138.192.58').country.iso_code
u'US'
Suposo que utilitzar el de països deu ser més eficient si només volem fer això, i potser seria el que convindria utilitzar per a bloquejar consultes de la Xina, mentre que el de ciutats serà per a les estadístiques que es fan cada nit. Això sí, en el moment que faci l'actualització tot el software ha d'estar sincronitzat amb les noves bases de dades.
$ ls -lh /var/lib/GeoIP/
-rw-r--r-- 1 root root 61M de juny 19 07:02 GeoLite2-City.mmdb
-rw-r--r-- 1 root root 3,7M de juny 19 07:01 GeoLite2-Country.mmdb