W pythonie nie pomogę, natomiast służę przykładami w R: Open Data sources – 2 OpenStreetMap as a universal spatial data source. Szczególnej uwadze polecam pakiety osmdata
i osmextract
. Ogólnodostępnym źródłem granic jest GADM: GADM, którego granice są jakimś tam przybliżeniem danych OSM, ale dostępne już w wersji wektorowej/przestrzennej.
Jeśli chcesz uzyskać relacje między danymi przestrzennymi, użyj formatu danych przestrzennych (sądząc po wstawionym obrazku, używasz MySQLa, który również dane przestrzenne obsługuje (https://dev.mysql.com/doc/refman/8.0/en/gis-data-formats.html)). Do zaimportowania danych użyłbym ogr2ogr (ogr2ogr — GDAL documentation), który bez problemu czyta dane OSM i zapisuje do MySQLa (Vector drivers — GDAL documentation). A następnie użył analizy przestrzennej, coś w rodzaju ST_Within (https://dev.mysql.com/doc/refman/8.0/en/spatial-function-reference.html).
EDIT: nie bazowałbym na kodach pocztowych, dość dobrze zmapowane są w Polsce, natomiast w Niemczech – nie bardzo. Również zwróciłbym uwagę na aktualność granic - nawet w .pl nie wszystkie granice gmin są aktualne. Przypisanie ulicy do konkretnej miejscowości/gminy też może napotkać na problemy, zwłaszcza w miejscach gdy ulica przebiega przez lub nawet pokrywa się z granicą. Dla .pl rozważyłbym wykorzystanie danych państwowych: BDOT10k (przebiegi granic) i TERYT.