Files
courses/2024_Datenbanksysteme/README.md
T
2025-07-30 15:57:48 +02:00

157 lines
3.1 KiB
Markdown

# Data preprocessing
```bash
cd path/to/geowebapp
```
(OPTIONAL)
Eigentlich sind die Daten schon verarbeitet in data/preprocessed
```bash
python3 data/preprocess_bevoelkerung.py
```
```bash
python3 data/preprocess_hochschulen.py # Nur wenn nötig, dauert sehr lange wegen Koordinaten und kann auch abrechen
```
```bash
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
```bash
brew install postgresql@14
```
## Start
```bash
/opt/homebrew/opt/postgresql@14/bin/postgres -D /opt/homebrew/var/postgresql@14
```
# Run sql
```bash
psql -h localhost -p 5432 -U <username> -d postgres
```
1. create_database.sql
```sql
CREATE DATABASE geowebapp;
```
2. Check
```sql
\l
```
3. Switch to geowebapp
```sql
\c geowebapp
```
4. Create tables
```sql
-- 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)
);
```
5. Insert data
```sql
-- 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;
```
6. Check
```sql
\dt
```
```sql
SELECT * FROM your_table_name LIMIT 5;
```
# Install requirements
```bash
pip install -r requirements.txt
```
# Change server path in app.py
For example
```python
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
```bash
python app.py
```
öffne `http://127.0.0.1:5000` in einem Browser um die App zu sehen, solange flask im Terminal läuft.