diff --git a/adressen_update_script.py b/adressen_update_script.py index ead5d0052406e619f7df2243975c492fc2eb8b9c..58993f1ed45af9eea9212c138b8b2fc619d9bd71 100644 --- a/adressen_update_script.py +++ b/adressen_update_script.py @@ -16,13 +16,14 @@ if __name__ == '__main__': dbname={conn_config['connection']['dbname']} user={conn_config['connection']['user']} password={conn_config['connection']['pwd']}""" + table = conn_config["connection"]['table'] url = conn_config['connection']['url'] my_db = DBTools(conn_str) my_api = APITools(url) - schulen = my_db.select_uri() + schulen = my_db.select_uri(table) lenschule = len(schulen) i = 1 @@ -30,7 +31,7 @@ if __name__ == '__main__': print(str(i) + "/" + str(lenschule)) if item[0] is not None: adresse = my_api.findadresse(item[0]) - my_db.update_adress(adresse, item[0]) + my_db.update_adress(adresse, item[0], table) else: print("hat keine URI") diff --git a/example_conn.cfg b/example_conn.cfg index 6eed2b7e48644e07b50cb74e4bc38de6515f7c82..c330f0c1cd910a0ac09f64c09f0ce1b4b4981b39 100644 --- a/example_conn.cfg +++ b/example_conn.cfg @@ -4,4 +4,5 @@ port=port dbname=database name user=username pwd=password -url=API url \ No newline at end of file +url=API url +table=tablename \ No newline at end of file diff --git a/geocoder_script.py b/geocoder_script.py index bb08bb9f0094164035ca3ef1171a743af99d1be1..c473b7d21d20bc36d6471f778e9b13b4e23d101e 100644 --- a/geocoder_script.py +++ b/geocoder_script.py @@ -15,6 +15,7 @@ if __name__ == '__main__': dbname={conn_config['connection']['dbname']} user={conn_config['connection']['user']} password={conn_config['connection']['pwd']}""" + table = conn_config['connection']['table'] url = conn_config['connection']['url'] # logfile = r"geocoder.log" @@ -22,7 +23,7 @@ if __name__ == '__main__': my_db = DBTools(conn_str) my_api = APITools(url) - schulen = my_db.select_adress() + schulen = my_db.select_adress(table) adresse = {} maxfeatures = len(schulen) numfeatures = 0 @@ -40,7 +41,7 @@ if __name__ == '__main__': if areg_response.get("uri") is not None: areg_uri = areg_response["uri"] - my_db.update_uri(str(item[0]), areg_uri) + my_db.update_uri(str(item[0]), areg_uri, table) numfeatures += 1 else: areg_response_key = list(areg_response.keys()) diff --git a/script_helper.py b/script_helper.py index 51e39de0f21a6a73ea8a38b7c6c238466f8ef0f5..dfa768a04604dfb35f75fb11e8dcb81fa9649d3b 100644 --- a/script_helper.py +++ b/script_helper.py @@ -21,7 +21,7 @@ class DBTools: self.db_connection = psycopg2.connect(conn) self.cursor = self.db_connection.cursor() - def select_adress(self) -> "list[tuple[str, ... ]]": + def select_adress(self, table: str) -> "list[tuple[str, ... ]]": """Selektieren der Adressdaten Funktion zum selektieren der Adressdaten der Schulen aus der Datenbank. @@ -32,12 +32,16 @@ class DBTools: * PLZ * Ortsname + Args: + table: Name der Tabelle aus welcher die Adressen selektiert werden + sollen + Returns: Liste mit mehreren Tupeln welche die Adressdaten der Schulen enthalten. """ - select_sql = """ + select_sql = f""" select lokaleID, adressealt_hnr, @@ -45,29 +49,33 @@ class DBTools: adressealt_plz, adressealt_ort from - prototyp_areg.schulen;""" + {table};""" self.cursor.execute(select_sql) query_result = self.cursor.fetchall() return query_result - def select_uri(self) -> "list[tuple[str, ... ]]": + def select_uri(self, table: str) -> "list[tuple[str, ... ]]": """Selektieren der AREG URI Funktion zum selektieren der URI aus dem Datensatz um diese mit aktuellen AREG Adressdaten anzureichern. + Args: + table: Name der Tabelle aus welcher die Adressen selektiert werden + sollen + Returns: Liste mit meheren Tupeln welche die AREG URI enthalten. Es wird sichergestellt, dass keine NULL Werte vorkommen. """ - select_sql = """ + select_sql = f""" select distinct(areg_uri) from - prototyp_areg.schulen + {table} where areg_uri like 'https://%';""" @@ -76,7 +84,7 @@ class DBTools: return query_data - def update_uri(self, param_dbid: str, param_uri: str) -> None: + def update_uri(self, param_dbid: str, param_uri: str, table: str) -> None: """Update der URI in der DB Funktion zum Update der Datenbank mit den neuen URI aus dem Geocoder. @@ -84,18 +92,20 @@ class DBTools: Args: param_dbid: ID der Schule aus der Datenbank (nicht AREG URI) param_uri: AREG URI + table: Name der Tabelle aus welcher die Adressen selektiert werden + sollen """ - sql_alter = """ + sql_alter = f""" alter table - prototyp_areg.schulen + {table} add column if not exists areg_uri varchar; """ sql_update = f""" update - prototyp_areg.schulen + {table} set areg_uri='{param_uri}' where @@ -105,7 +115,7 @@ class DBTools: self.cursor.execute(sql_alter) self.cursor.execute(sql_update) - def update_adress(self, data: "dict[str,str]", param_uri: str) -> None: + def update_adress(self, data: "dict[str,str]", param_uri: str, table: str) -> None: # noqa """Updaten der Adressen mit AREG URI Funktion zum Update der Datenbank mit den neuen Adressdaten aus dem @@ -114,13 +124,15 @@ class DBTools: Args: data: Dictionary mit neuen Adressdaten aus der AREG API param_uri: AREG URI zum zuordnen der Adressdaten + table: Name der Tabelle aus welcher die Adressen selektiert werden + sollen """ geometry = str(data['geometry']) geometry = geometry.replace("'", '"') - sql_alter = """ + sql_alter = f""" alter table - prototyp_areg.schulen + {table} add column if not exists hnr varchar, add column if not exists