›_ebskola.lv
Prog I · 10. tēma · 6 stundas - PostgreSQL · SQL · psycopg2

Datubāzes //
un PostgreSQL

Iemācies glabāt datus relāciju datubāzē. Raksti SQL vaicājumus un savieno PostgreSQL ar Python, izmantojot psycopg2.

6 stundas SQL · PostgreSQL Highscore datubāze
# 01 stundu plāns

6 stundas - SQL, PostgreSQL un psycopg2

noslēguma projekts
PostgreSQLtabulasrindas · kolonnas// datubāze
PostgreSQLievads

Ievads datubāzēs un PostgreSQL

Relāciju datubāžu koncepti, tabulas, kolonnas un rindas, pgAdmin, pirmā datubāze.

10.1 stundaatvērt ↗
SELECTlasītINSERTpievienotUPDATEmainītDELETEdzēstSELECT * FROM highscoreWHERE punkti > 50 ORDER BY punkti DESC;// SQL CRUD
SQL · CRUDvaicājumi

SQL CRUD: SELECT, INSERT, UPDATE, DELETE

Četras pamatoperācijas datubāzē, WHERE, ORDER BY, LIMIT klauzulas.

10.2 stundaatvērt ↗
spēlētāji🔑 id INT PKvārds VARCHARreģ_datums DATErezultāti🔑 id INT PK🔗 spēlētājs FKpunkti INTFK// ER modelis
SQL · ERprojektēšana

Tabulu projektēšana un saites

ER diagrammas, primārās (PK) un ārējās (FK) atslēgas, tabulu relācijas.

10.3 stundaatvērt ↗
spēlētājiid, vārdsrezultātipunktiJOININNER · LEFT · RIGHT JOIN// JOIN
SQL · JOINsarežģīti

JOIN un sarežģīti vaicājumi

INNER JOIN, LEFT JOIN, WHERE ar vairākām tabulām, COUNT, AVG.

10.4 stundaatvērt ↗
Pythonpsycopg2cursorexecute()fetchall()commit()DB:5432// psycopg2
psycopg2integrācija

Python ↔ PostgreSQL (psycopg2)

psycopg2.connect(), cursor.execute(), parametrizēti vaicājumi %s, fetchall(), commit().

10.5 stundaatvērt ↗
$ python highscore_db.pySavienots ar PostgreSQLTOP 5:1. Anna - 95 punkti2. Pēteris - 88 punkti3. Marta - 82 punktiIerakstīts: Jānis 75$ python highscore_db.py
Python · SQLprojekts

Noslēguma projekts: Highscore datubāze

Quiz rezultātu saglabāšana PostgreSQL, SELECT TOP-5, INSERT ar psycopg2, pilna CRUD lietotne.

10.6 projektsatvērt ↗
# 02 špikeris

SQL un psycopg2 špikeris

psycopg2 - Python ↔ PostgreSQL savienojums

import psycopg2

sav = psycopg2.connect(dbname="spele_db", user="postgres", host="localhost")
k = sav.cursor()

# INSERT - vienmēr izmanto %s, nekad f-strings!
k.execute("INSERT INTO highscore (vards, punkti) VALUES (%s, %s)", ("Anna", 95))
sav.commit()

# SELECT
k.execute("SELECT vards, punkti FROM highscore ORDER BY punkti DESC LIMIT 5")
top5 = k.fetchall()   # [(Anna, 95), (Janis, 88), ...]
k.close(); sav.close()

SQL pamata vaicājumi

CREATE TABLE highscore (
    id     SERIAL PRIMARY KEY,
    vards  VARCHAR(50) NOT NULL,
    punkti INTEGER DEFAULT 0
);
SELECT * FROM highscore WHERE punkti > 50 ORDER BY punkti DESC;
INSERT INTO highscore (vards, punkti) VALUES ('Anna', 95);
UPDATE highscore SET punkti = 100 WHERE vards = 'Anna';
DELETE FROM highscore WHERE id = 5;
SQL SELECT * FROM highscore ORDER BY punkti DESC LIMIT 5; -- top 5