Pridan nastroj na kontrolu spravnosti migraci.
This commit is contained in:
parent
b4e0bf7348
commit
d15e97447e
1 changed files with 58 additions and 0 deletions
58
db_compare.py
Normal file
58
db_compare.py
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import psycopg2
|
||||||
|
import psycopg2.extras
|
||||||
|
|
||||||
|
OLD_DB = "mam_old"
|
||||||
|
NEW_DB = "mamweb"
|
||||||
|
|
||||||
|
oldconn = psycopg2.connect(f"dbname={OLD_DB}")
|
||||||
|
newconn = psycopg2.connect(f"dbname={NEW_DB}")
|
||||||
|
|
||||||
|
oldcur = oldconn.cursor(cursor_factory=psycopg2.extras.DictCursor)
|
||||||
|
newcur = newconn.cursor(cursor_factory=psycopg2.extras.DictCursor)
|
||||||
|
|
||||||
|
|
||||||
|
# Uses global variables oldcur, newcur!
|
||||||
|
def execute_simple(old_query, new_query=None):
|
||||||
|
if new_query is None:
|
||||||
|
new_query = old_query
|
||||||
|
|
||||||
|
oldcur.execute(old_query)
|
||||||
|
newcur.execute(new_query)
|
||||||
|
|
||||||
|
if oldcur.rowcount != newcur.rowcount:
|
||||||
|
raise ValueError(f"Queries '{old_query}' and '{new_query}' returned different number of rows ({oldcur.rowcount} and {newcur.rowcount})")
|
||||||
|
|
||||||
|
return(oldcur.fetchall(), newcur.fetchall())
|
||||||
|
|
||||||
|
def check_same(old_row, new_row, old_fields, new_fields=None):
|
||||||
|
if type(old_fields) != list:
|
||||||
|
old_fields = [old_fields]
|
||||||
|
|
||||||
|
if new_fields is None:
|
||||||
|
new_fields = old_fields
|
||||||
|
|
||||||
|
fields = zip(old_fields, new_fields)
|
||||||
|
|
||||||
|
for old_field, new_field in fields:
|
||||||
|
if old_row[old_field] == new_row[new_field]:
|
||||||
|
continue
|
||||||
|
raise ValueError(f"Fields '{old_field}' and '{new_field}' differs for rows '{old_row}' and '{new_row}'")
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def check_skola():
|
||||||
|
old_query = "SELECT * FROM seminar_skoly ORDER BY id"
|
||||||
|
new_query = old_query
|
||||||
|
|
||||||
|
old_res, new_res = execute_simple(old_query,new_query)
|
||||||
|
|
||||||
|
res = zip(old_res,new_res)
|
||||||
|
|
||||||
|
for o,n in res:
|
||||||
|
check_same(o,n,['id','aesop_id','izo','nazev','kratky_nazev','ulice','mesto','psc','stat','je_zs','je_ss','poznamka'])
|
||||||
|
|
||||||
|
check_skola()
|
||||||
|
|
Loading…
Reference in a new issue