projects-jenz/event_notification/python/pipelines.py

38 lines
1.8 KiB
Python

from settings import get_connection_event
class contentPipeline:
def process_item(self, item, spider):
print("entered process_item:")
print("item: ", item)
with get_connection_event() as conn:
with conn.cursor() as cur:
try:
sql_statement = f"""
select * from unloze_event.event e
where e.event_title = %s
"""
cur.execute(sql_statement, [item['event_title']])
res = cur.fetchone()
if res is None:
sql_statement = f"""
delete from unloze_event.event
where event_server like '%{item['event_server'].split(":27")[1]}%'
"""
#very cheap way of replacing rows
print("deleting thread: ", sql_statement)
cur.execute(sql_statement)
sql_statement = f"""
insert into unloze_event.event
(event_title, event_server, event_maps, event_date, event_time, event_reward, event_url)
VALUES (%s, %s, %s, %s, %s, %s, %s)
"""
cur.execute(sql_statement, [item['event_title'], item['event_server'], item['event_maps'], item['event_date'], item['event_time'], item['event_reward'], item['event_url']])
#context manager does not seem to work with this mysql library so manual commiting seems needed
conn.commit()
except Exception:
import traceback
error_msg = traceback.format_exc()
print("error_msg: ", error_msg)
return item