Files
courses/2024 Datenbanksysteme/App

Data preprocessing

cd path/to/geowebapp

(OPTIONAL)

Eigentlich sind die Daten schon verarbeitet in data/preprocessed

python3 data/preprocess_bevoelkerung.py
python3 data/preprocess_hochschulen.py # Nur wenn nötig, dauert sehr lange wegen Koordinaten und kann auch abrechen
python3 data/preprocess_mieten.py

Setup Postgresql MacOS

Bei MacOS installiert man im Terminal mit Brew, weis nicht was das bei Windows ist. Geht bestimmt auch über den normalen Installer von deren Website.

Install

brew install postgresql@14

Start

/opt/homebrew/opt/postgresql@14/bin/postgres -D /opt/homebrew/var/postgresql@14

Run sql

psql -h localhost -p 5432 -U <username> -d postgres
  1. create_database.sql
CREATE DATABASE geowebapp;
  1. Check
\l
  1. Switch to geowebapp
\c geowebapp
  1. Create tables
-- Create a staging table for loading CSV data
CREATE TABLE Bevoelkerung (
    region_code VARCHAR(10) PRIMARY KEY,
    region_name VARCHAR(50),
    total_population INT,
    male_population INT,
    female_population INT,
    region_type VARCHAR(20),
    bundesland VARCHAR(50)
);

-- Create the Hochschulen table
CREATE TABLE Hochschulen (
    namekurz_h VARCHAR(50),
    name_h VARCHAR(255) PRIMARY KEY,
    typ VARCHAR(100),
    traeger VARCHAR(100),
    land VARCHAR(50),
    studenten INT,
    gjahr INT,
    precht VARCHAR(10),
    hrecht VARCHAR(10),
    str VARCHAR(255),
    plz INT,
    ort VARCHAR(100),
    web VARCHAR(255),
    lat DECIMAL(18, 10),
    lon DECIMAL(18, 10)
);

-- Mieten
CREATE TABLE Mieten (
    land VARCHAR(50) PRIMARY KEY,
    mieten_ab_2019 DECIMAL(4,1),
    mieten_insgesamt DECIMAL(4,1)
);
  1. Insert data
-- Copy data into Bevoelkerung staging table
COPY public.Bevoelkerung (region_code, region_name, total_population, male_population, female_population, region_type, bundesland)
FROM '/Users/huaqo/Developer/geowebapp/data/preprocessed/cleaned_bevoelkerung.csv'
DELIMITER ','
CSV HEADER;

-- Copy data into Hochschulen table
COPY public.Hochschulen (namekurz_h, name_h, typ, traeger, land, studenten, gjahr, precht, hrecht, str, plz, ort, web, lat, lon)
FROM '/Users/huaqo/Developer/geowebapp/data/preprocessed/cleaned_hochschulen.csv'
DELIMITER ','
CSV HEADER;

-- Copy data into Mieten table
COPY public.Mieten (land, mieten_ab_2019, mieten_insgesamt)
FROM '/Users/huaqo/Developer/geowebapp/data/preprocessed/cleaned_mieten.csv'
DELIMITER ','
CSV HEADER;
  1. Check
\dt
SELECT * FROM your_table_name LIMIT 5;

Install requirements

pip install -r requirements.txt

Change server path in app.py

For example

SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', 'postgresql://huaqo:0000@localhost:5432/geowebapp')

huaqo sollte mit deinem usernamen ersetzt werden und 0000 mit deinem password. Der rest sollte gleich sein. Vielleicht hast du einen anderen port, nicht 5432.

Run app

python app.py

öffne http://127.0.0.1:5000 in einem Browser um die App zu sehen, solange flask im Terminal läuft.