avatar
Untitled

Guest 92 9th Jul, 2024

MARKUP 3.22 KB
                                           
                         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()
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM