import psycopg2 from datetime import datetime # Konfiguracja połączenia z bazą danych conn = psycopg2.connect( dbname="nazwa_bazy_danych", user="uzytkownik", password="haslo", host="host", port="port" ) # Funkcja do aktualizacji klauzuli def update_clause(service, paywayid, language): try: cur = conn.cursor() # Zapytanie do pobrania poprzedniej klauzuli cur.execute(""" SELECT clause_id, html, mobilehtml FROM tabela WHERE service = %s AND paywayid = %s AND language = %s ORDER BY lastmodified DESC LIMIT 1 OFFSET 1 """, (service, paywayid, language)) previous_clause = cur.fetchone() if previous_clause is None: print(f"Brak poprzedniej klauzuli dla serwisu {service}, paywayid {paywayid} i języka {language}.") return prev_clause_id, html, mobilehtml = previous_clause # Zapytanie do pobrania najnowszej klauzuli cur.execute(""" SELECT clause_id FROM tabela WHERE service = %s AND paywayid = %s AND language = %s ORDER BY lastmodified DESC LIMIT 1 """, (service, paywayid, language)) latest_clause = cur.fetchone() if latest_clause is None: print(f"Brak najnowszej klauzuli dla serwisu {service}, paywayid {paywayid} i języka {language}.") return latest_clause_id = latest_clause[0] # Aktualizacja najnowszej klauzuli cur.execute(""" UPDATE tabela SET html = %s, mobilehtml = %s, lastmodified = %s WHERE clause_id = %s """, (html, mobilehtml, datetime.now(), latest_clause_id)) conn.commit() print(f"Klauzula {latest_clause_id} dla serwisu {service}, paywayid {paywayid} i języka {language} została zaktualizowana.") except Exception as e: print(f"Error: {e}") conn.rollback() finally: cur.close() # Funkcja do pobrania unikalnych wartości paywayid dla danego serwisu i języka def get_paywayids(service, language): cur = conn.cursor() cur.execute(""" SELECT DISTINCT paywayid FROM tabela WHERE service = %s AND language = %s """, (service, language)) paywayids = [row[0] for row in cur.fetchall()] cur.close() return paywayids # Lista serwisów i języków na początku skryptu services = ['service1', 'service2'] # Dodaj więcej serwisów jeśli potrzeba languages = ['pl', 'en'] # Dodaj więcej języków jeśli potrzeba # Iteracja po serwisach i językach for service in services: for language in languages: paywayids = get_paywayids(service, language) for paywayid in paywayids: update_clause(service, paywayid, language) # Zamknięcie połączenia z bazą danych conn.close()