Postgres' adgangskode-hash er meget tæt på, hvad du gjorde, den skal bare have brugernavnet inkluderet som følger:
pghash = "md5" + hashlib.md5(password + username).hexdigest()
AFAIK, postgres-dokumenterne dokumenterer slet ikke dette hash-format, og lader til at antage, at admins sjældent vil håndtere disse hashes direkte :( Der er ingen indbyggede metoder til at generere disse hashes, som jeg kender til. Hvis adgangskoden til ALTER USER
kommandoen er ikke i overensstemmelse med postgres hash-formatet, den antager, at adgangskoden ikke er blevet hashed, og tager sig af det internt - ifølge dokumenterne for CREATE ROLE's ENCRYPTED nøgleord. (IMHO dette er en mangelfuld adfærd, for hvis en hash afhænger af brugernavnet, betyder det, at hashes ikke kan kopieres og indsættes mellem forskellige konti, går i stykker, når kontoen omdøbes, og (gætter på entropi) kun har ~6 bits af effektivt salt).
Advarslen øverst i passlibs dokumentation for hashen kunne nok være klarere. Det var beregnet til at advare folk, der gennemsøgte passlib-dokumentationen om, at 1) denne hash var frygtelig usikker, 2) at de ikke skulle bruge den til brug i deres egne applikationer, og 3) at den kun var egnet til det formål at arbejde med postgres brugerkonti, da det er det stærkeste (og eneste) hash-format, som postgres understøtter for sine egne konti.
(Hvis du forsøger at bruge postgres til at hash adgangskoder til din egen applikations brugerkonti, vil jeg stærkt tilslutte mig Clodoaldos anbefaling om at bruge bcrypt ved hjælp af pgcrypto-udvidelsen).