Abgegebene Flurstücke eines Bewirtschafter mit "gejointem" Eigentümer
# encoding: utf-8
from psycopg2 import connect
import sys
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
con = None
con = connect(user='postgres', host='localhost', password='18191920jRS', database='kuppingen')
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cur = con.cursor()
cur.execute("SELECT vname, nname, id FROM bewirtschafter WHERE nname IS NOT NULL;")
bewirtschafter = cur.fetchall()
# jetzt kann über die Bewirtschafter iteriert werden ...
for bew in bewirtschafter:
fileOut = open(str(bew[1])+ ", " +str(bew[0])+"_Bilanz.csv", "w")
# erst mal die abgegebenen Flurstücke rauspicken ...
listAbgegebeneFls = set()
cursorAbgegebeneFlurstuecke = con.cursor()
cursorAbgegebeneFlurstuecke.execute("""
SELECT f.id, f.lage_index, f.flaeche_t, f.flaeche_r, f.nutzung, f.geo_flurstuecke_id, e.nname, e.vname
FROM tausch t
INNER JOIN bewirtschafter b ON t.bewirtschafter_id = b.id
INNER JOIN flurstuecke f ON t.flurstuecke_id = f.geo_flurstuecke_id
FULL JOIN eigentuemer_flurstuecke ef ON t.flurstuecke_id = ef.flurstuecke_id
WHERE ef.eigentuemer_id = e.id
AND t.tauschabende_id = 1
AND t.bewirtschafter_id = b.id
AND b.id = """ + str(bew[2]) + """
AND t.flurstuecke_id NOT IN
(
SELECT t.flurstuecke_id
FROM flurstuecke AS f, bewirtschafter AS b, tausch AS tausch
WHERE t.tauschabende_id IN
(
SELECT MAX(id)
FROM tauschabende
)
AND t.bewirtschafter_id = b.id
AND t.flurstuecke_id = f.geo_flurstuecke_id
AND b.id = """ + str(bew[2]) + """
)
""")
abgFls = cursorAbgegebeneFlurstuecke.fetchall()
fileOut.write("Abgegebene Flurstücke\n")
fileOut.write("Flurstück;Fläche m²;Fläche relativ m²;Nutzung;GID;Tauschpartner;Eigentümer\n")
zaehlerAb = 1
for fls in abgFls:
# hier sind sie, alle in einer Reihe ...
cursorUrspBewirtschafter = con.cursor()
cursorUrspBewirtschafter.execute("""
SELECT b.nname, b.vname FROM flurstuecke AS f, bewirtschafter AS b, tausch AS t
WHERE f.geo_flurstuecke_id = t.flurstuecke_id
AND t.bewirtschafter_id = b.id
AND f.id = """ + str(fls[0]) + """
AND t.tauschabende_id IN
(
SELECT MAX(id)
FROM tauschabende
)
""")
bewUrsp = cursorUrspBewirtschafter.fetchone()
cursorUrspBewirtschafter.close()
fileOut.write(str(zaehlerAb) + ";" +str(fls[1]) + ";" + str(fls[2]) + ";" + str(fls[3]) + ";" + str(fls[4]) + ";" + str(fls[5]) + ";" + str(bewUrsp[0]) + ", " + str(bewUrsp[1]) + ";"+ str(fls[6])+", "+str(fls[7])+"\n")
zaehlerAb += 1
cursorAbgegebeneFlurstuecke.close()
# und jetzt kümmern wir uns um das aufgenomme Zeugs ...
cursorAufgenommeneFlurstuecke = con.cursor()
cursorAufgenommeneFlurstuecke.execute("""
SELECT f.id, f.lage_index, f.flaeche_t, f.flaeche_r, f.nutzung, f.geo_flurstuecke_id
FROM flurstuecke AS f, bewirtschafter AS b, tausch AS t
WHERE t.tauschabende_id IN
(
SELECT MAX(id)
FROM tauschabende
)
AND t.bewirtschafter_id = b.id
AND t.flurstuecke_id = f.geo_flurstuecke_id
AND b.id = """ + str(bew[2]) + """
AND t.flurstuecke_id NOT IN
(
SELECT t.flurstuecke_id
FROM flurstuecke AS f, bewirtschafter AS b, tausch AS t
WHERE t.tauschabende_id = 1
AND t.bewirtschafter_id = b.id
AND t.flurstuecke_id = f.geo_flurstuecke_id
AND b.id = """ + str(bew[2]) + """
)
""")
aufFls = cursorAufgenommeneFlurstuecke.fetchall()
fileOut.write("Aufgenommene Flurstücke\n")
fileOut.write("Flurstück;Fläche m²;Fläche relativ m²;Nutzung;GID;Tauschpartner\n")
zaehlerAuf = 1
for fl in aufFls:
# hab euch alle am Wickel ...
cursorUrsp2Bewirtschafter = con.cursor()
cursorUrsp2Bewirtschafter.execute("""
SELECT b.nname, b.vname FROM flurstuecke AS f, bewirtschafter AS b, tausch AS t
WHERE f.geo_flurstuecke_id = t.flurstuecke_id
AND t.bewirtschafter_id = b.id
AND f.id = """ + str(fl[0]) + """
AND t.tauschabende_id = 1
""")
bewUrsp2 = cursorUrsp2Bewirtschafter.fetchone()
cursorUrsp2Bewirtschafter.close()
fileOut.write(str(zaehlerAuf) + ";" +str(fl[1]) + ";" + str(fl[2]) + ";" + str(fl[3]) + ";" + str(fl[4]) + ";" + str(fl[5]) + ";" + str(bewUrsp2[0]) + ", " + str(bewUrsp2[1]) + "\n")
zaehlerAuf += 1
cursorAufgenommeneFlurstuecke.close()
fileOut.close()
cur.close()
con.close()