(Bei nichtangabe von einem Schema wird das der vorherigen Zeile verwendet! (Bei der ersten Angabe von der Anonymisierungstabelle und der zu anonymisierenden Tabelle muss jeweils das Schema angegeben werden!))
...
...
@@ -64,8 +64,8 @@ Schema für diesen User erstellen
Min. Python version: 3.X
Module: psycopg2
User auf der Datenbank erstellen
Schema für diesen User erstellen
User auf der Datenbank erstellen
Schema für diesen User erstellen
...
...
@@ -87,7 +87,8 @@ Schema für diesen User erstellen
3. Ausführung:
1. Tabellenliste anlegen (im Bsp. "table.txt")
2. "pytablesoutoftextfile.py" ausführen => Tabellen werden ohne Daten angelegt
3. "pysqlstatementsoutoftextfile" ausführen => "createtables.sql" mit SQL-Statements wird erzeugzt
3. psql -f createtables.sql ausführen => Tabellen werden ohne Daten angelegt
cur.execute(sql.SQL("SELECT COUNT (id) FROM {}.{}").format(sql.Identifier(replacementschema),sql.Identifier(oldtable)))
anzahlbenutzer=(cur.fetchall())[0][0]
except:
error=0
racur=conn.cursor()
selcur=conn.cursor()
# Update original table #
try:
cur.execute(sql.SQL("SELECT COUNT (id) FROM {}.{}").format(sql.Identifier(replacewithschema),sql.Identifier(replacetable)))
anzahl=(cur.fetchall())[0][0]
except:
error=0
counter=1
try:
anzahlbenutzer
selcur.execute(sql.SQL("SELECT %s FROM {}.{}").format(sql.Identifier(replacementschema),sql.Identifier(oldtable)),(AsIs(primarykeylist),))
except:
error=0
else:
whilecounter<=anzahlbenutzer:
while1:
try:
cur.execute(sql.SQL("SELECT {} FROM {}.{} WHERE id = %s").format(sql.Identifier(replacetable),sql.Identifier(replacewithschema),sql.Identifier(replacetable)),(randrange(anzahl),))
user=selcur.fetchone()
except:
try:
print("ERROR! The Table or column \""+replacetable+"\" doesn't exist in the schema \""+replacewithschema+"\" [Line: "+str(linecount-1)+"]!")
except:
print("ERROR! You need to specify a table and a schema [Line: "+str(linecount-1)+"]!")
finally:
exit()
error=0
counter2=0
# random value #
try:
racur.execute(sql.SQL("SELECT COUNT (id) FROM {}.{}").format(sql.Identifier(replacewithschema),sql.Identifier(replacetable)))
anzahl=(racur.fetchall())[0][0]
except:
error=0
else:
value="".join(cur.fetchall()[0])
racur.execute(sql.SQL("SELECT {} FROM {}.{} WHERE id = %s").format(sql.Identifier(replacetable),sql.Identifier(replacewithschema),sql.Identifier(replacetable)),(randrange(anzahl),))
value="".join(racur.fetchall()[0])
# Update #
try:
cur.execute(sql.SQL("UPDATE {}.{} SET {} = %s WHERE id = %s").format(sql.Identifier(replacementschema),sql.Identifier(oldtable),sql.Identifier(oldcolumn)),(value,counter))
query=(sql.SQL("UPDATE {}.{} SET {} = {} WHERE {} = {}").format(sql.Identifier(replacementschema),sql.Identifier(oldtable),sql.Identifier(oldcolumn),sql.Literal(value),sql.Identifier(primarykeylist.split(",")[counter2]),sql.Literal(user[counter2])))
except:
print("ERROR! The column \""+oldcolumn+"\" inside the table \""+oldtable+"\" doesn't exist inside the schema \""+replacementschema+"\" [Line: "+str(linecount)+"]!")
exit()
conn.commit()
counter=counter+1
error=0
count=1
whilelen(primarykeylist.split(","))>(count):
add=(sql.SQL(" AND {} = {}").format(sql.Identifier(primarykeylist.split(",")[count]),sql.Literal(user[count])))
cur.execute(sql.SQL("CREATE TABLE {} (id serial PRIMARY KEY, {} varchar)").format(sql.Identifier(tablename),sql.Identifier(tablename)))
cur.execute(sql.SQL("CREATE TABLE {}.{} (id serial PRIMARY KEY, {} varchar)").format(sql.Identifier(schema),sql.Identifier(tablename),sql.Identifier(tablename)))
fornameinlines:
cur.execute(sql.SQL("INSERT INTO {}.{} ({}) VALUES (%s)").format(sql.Identifier(schema),sql.Identifier(tablename),sql.Identifier(tablename)),(name[:-1],))