Database connection
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Rauchtest fuer den Datenbankzugang.
|
||||
|
||||
Meldet sich an, liest den Bestand und zeigt, worauf Phase 2 aufsetzt.
|
||||
Nur SELECT - dieses Skript schreibt nichts.
|
||||
|
||||
python3 check_db.py
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
from db import verbindung
|
||||
|
||||
|
||||
def main():
|
||||
with verbindung() as conn:
|
||||
nutzer, datenbank, version = conn.execute(
|
||||
"select current_user, current_database(), version()"
|
||||
).fetchone()
|
||||
print(f"verbunden als {nutzer}@{datenbank}")
|
||||
print(f" {version.split(' on ')[0]}")
|
||||
|
||||
erw = [r[0] for r in conn.execute("select extname from pg_extension order by 1")]
|
||||
print(f" Extensions: {', '.join(erw)}")
|
||||
for fehlend in ("vector",):
|
||||
if fehlend not in erw:
|
||||
print(f" fehlt noch fuer Phase 2: {fehlend}")
|
||||
|
||||
print("\nTabellen")
|
||||
for name, in conn.execute(
|
||||
"""select relname from pg_class c join pg_namespace n on n.oid = c.relnamespace
|
||||
where c.relkind = 'r' and n.nspname = 'public' order by relname"""
|
||||
):
|
||||
anzahl = conn.execute(f'select count(*) from "{name}"').fetchone()[0]
|
||||
print(f" {name:22} {anzahl:>8}")
|
||||
|
||||
von, bis, slots, gesamt = conn.execute(
|
||||
"select min(slot), max(slot), count(distinct slot), count(*) from raw_items"
|
||||
).fetchone()
|
||||
if not gesamt:
|
||||
print("\nraw_items ist leer - Phase 1 hat hier noch nichts abgelegt.")
|
||||
return 0
|
||||
print(f"\nraw_items: {gesamt} Items in {slots} Slots, {von} bis {bis}")
|
||||
|
||||
# Volltextabdeckung entscheidet, worauf Dubletten und Embeddings
|
||||
# ueberhaupt rechnen koennen - sie ist je Quelle sehr verschieden.
|
||||
print("\nje Quelle")
|
||||
print(f" {'quelle':<16}{'items':>7}{'volltext':>10}{'teaser':>8}{'revidiert':>11}")
|
||||
for quelle, n, volltext, teaser, revidiert in conn.execute(
|
||||
"""select quelle, count(*), count(volltext), count(teaser),
|
||||
count(*) filter (where revisionen > 0)
|
||||
from raw_items group by 1 order by 2 desc"""
|
||||
):
|
||||
print(f" {quelle:<16}{n:>7}{volltext:>10}{teaser:>8}{revidiert:>11}")
|
||||
|
||||
print("\njuengste Items")
|
||||
for id_, quelle, titel in conn.execute(
|
||||
"select id, quelle, titel from raw_items order by id desc limit 5"
|
||||
):
|
||||
print(f" {id_:>7} {quelle:<14}{titel[:60]}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user