jens-r
8/4/2015 - 9:27 AM

Abgegebene Flurstücke eines Bewirtschafter mit "gejointem" Eigentümer

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()