Untitled
Guest 360 9th Jul, 2024
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"
)
# Flaga DEBUG
DEBUG = True
# Plik do logowania w trybie DEBUG
debug_log_file = 'debug_log.txt'
# Funkcja do logowania w trybie DEBUG
def log_debug(message):
if DEBUG:
with open(debug_log_file, 'a') as file:
file.write(message + '\n')
# 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:
log_debug(f"Brak poprzedniej klauzuli dla serwisu {service}, paywayid {paywayid} i języka {language}.")
return
prev_clause_id, html, mobilehtml = previous_clause
log_debug(f"Pobrano poprzednią klauzulę: clause_id={prev_clause_id}, service={service}, paywayid={paywayid}, language={language}")
# 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:
log_debug(f"Brak najnowszej klauzuli dla serwisu {service}, paywayid {paywayid} i języka {language}.")
return
latest_clause_id = latest_clause[0]
log_debug(f"Pobrano najnowszą klauzulę: clause_id={latest_clause_id}, service={service}, paywayid={paywayid}, language={language}")
if not DEBUG:
# 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()
log_debug(f"Zaktualizowano klauzulę: clause_id={latest_clause_id}, service={service}, paywayid={paywayid}, language={language}")
else:
log_debug(f"Tryb debug - nie zapisano zmian do bazy danych dla clause_id={latest_clause_id}, service={service}, paywayid={paywayid}, language={language}")
except Exception as e:
log_debug(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