Files

400 lines
16 KiB
Python

import sqlalchemy
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Sequence, text, UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.schema import MetaData
from sqlalchemy.orm import sessionmaker
from sqlalchemy.types import *
class Tables():
def __init__(self):
global tvnetworknewvals
global tvwebchannelnewvals
global characterjsonnewvals
global seriesjsonnewvals
global episodejsonnewvals
global metadata
global engine
global session
global tvnetworknewvals
global tvwebchannelnewvals
global characterjsonnewvals
global seriesjsonnewvals
global episodejsonnewvals
global tvupdates
global newseriesdata
global actorlinks
global tablelist
def __del__(self):
pass
class Createtables():
def __init__(self, session, metadata, engine):
Base = declarative_base(metadata = metadata)
self.tablelist = self.settables(metadata, engine)
try:
self.drop(session, self.tablelist)
except:
pass
self.create(Base, engine, metadata, session, self.tablelist)
session.commit()
#self.send(tablelist)
def settables(self, metadata, engine):
tablelist = []
newseriesdata = Table('seriesdata', metadata,
Column('id', BIGINT, Sequence('seriesdata_id_seq'), primary_key = True),
Column('seriesid',INTEGER, unique=True),
Column('tvdbid', String(25)),
Column('tvrageid', String(25)),
Column('imdbid', String(25)),
Column('serieslanguage', String(25)),
Column('genres', String(75)),
Column('seriesname', String(150)),
Column('seriesstatus', String(25)),
Column('premiered', String(25)),
Column('airdays', String(72)),
Column('airtime', String(25)),
Column('runtime', String(25)),
Column('rating', String(25)),
Column('showtype',TEXT),
Column('overview',TEXT),
Column('mediumimage',TEXT),
Column('originalimage',TEXT),
Column('weight',INTEGER),
Column('networkid', BIGINT),
Column('webchannel', BIGINT),
Column('officalsite',TEXT),
Column('showurl',TEXT),
Column('apilink',TEXT),
Column('previousepisode',TEXT),
Column('nextepisode',TEXT),
schema = "dbo")
tablelist.append(newseriesdata)
newactordata = Table('actordata', metadata,
Column('id', BIGINT, Sequence('actordata_id_seq'), primary_key = True),
Column('actorid', INTEGER, unique=True),
Column('actorname', VARCHAR(72)),
Column('countryname', VARCHAR(144)),
Column('countrytimezone', VARCHAR(72)),
Column('birthday', DATE),
Column('deathday', DATE),
Column('gender', VARCHAR(6)),
Column('mediumimage', TEXT),
Column('originalimage', TEXT),
Column('apilink', TEXT),
Column('url', TEXT),
Column('countrycode', VARCHAR(12)),
schema = "dbo")
tablelist.append(newactordata)
newepdata = Table('epdata', metadata,
Column('id', BIGINT, Sequence('epdata_id_seq'), primary_key = True),
Column('episodeid', INTEGER),
Column('seriesid', INTEGER),
Column('season', INTEGER),
Column('episodenumber', INTEGER),
Column('episodename', TEXT),
Column('airdate', VARCHAR(32)),
Column('airtime', VARCHAR(32)),
Column('episodesummary', TEXT),
Column('airstamp', VARCHAR(32)),
Column('runtime', VARCHAR(6)),
Column('eplink', TEXT),
Column('mediumimage', TEXT),
Column('url', TEXT),
Column('originalimage', TEXT),
schema = "dbo")
tablelist.append(newepdata)
newcastdata = Table('castdata', metadata,
Column('id', BIGINT, Sequence('castdata_id_seq'), primary_key = True),
Column('seriesid', INTEGER),
Column('characterid', INTEGER),
Column('actorid', INTEGER),
Column('charactername', INTEGER),
Column('mediumimage', TEXT),
Column('originalimage', TEXT),
Column('apilink', TEXT),
Column('tvmazeilink', TEXT),
schema = "dbo")
tablelist.append(newcastdata)
tvnetworks = Table('tvnetworkdata', metadata,
Column('id', Integer, primary_key=True),
Column('networkid', String(12)),
Column('networkname', String(255)),
Column('country', String(255)),
Column('countrycode', String(4)),
Column('countrytimezone', String(25)),
schema = "dbo")
tablelist.append(tvnetworks)
tvwebchannels = Table('tvwebchanneldata', metadata,
Column('id', Integer, primary_key=True),
Column('webchannelname', String(255)),
Column('webchannelcountrycode', String(4)),
Column('webchannelcountryname', String(255)),
Column('webchannelcountrytimezone', String(4)),
schema = "dbo")
tablelist.append(tvwebchannels)
countries = Table('countrydata', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(255)),
Column('code', String(255)),
Column('timezone', String(255)),
UniqueConstraint('name', 'timezone', name='tz_name_uk'),
schema = "dbo")
tablelist.append(countries)
return(tablelist)
def create(self, Base, engine, metadata, session, tablelist):
print('Creating Data Tables')
Base.metadata.create_all(engine, tables=tablelist)
def drop(self, session, tablelist):
for table in tablelist:
try:
#print('Dropping ' + str(table))
table.drop()
except sqlalchemy.exc.ProgrammingError as se:
pass
def __del__(self):
pass
class TempTables():
def __init__(self, session, metadata, engine, tablelist):
Base = declarative_base(metadata = metadata)
self.tablelist = self.settables(metadata, engine)
try:
self.drop(session, self.tablelist)
except:
pass
self.create(Base, engine, metadata, session, self.tablelist)
#session.commit()
def settables(self, metadata, engine):
tablelist = []
tvnetworknewvals = Table('tvnetworknewvals', metadata,
Column('id', BIGINT, Sequence('network_id_seq'), primary_key = True),
Column('name', String(255)),
Column('countryid', String(255)),
schema = "updates")
tablelist.append(tvnetworknewvals)
tvwebchannelnewvals = Table('tvwebchannelnewvals', metadata,
Column('id', BIGINT, Sequence('webchannel_id_seq'), primary_key = True),
Column('name', String(255)),
Column('countryid', String(4)),
schema = "updates")
tablelist.append(tvwebchannelnewvals)
tvupdates = Table('tvupdates', metadata,
Column('seriesid', BIGINT, primary_key = True),
Column('timestamp', VARCHAR(15)),
schema = "updates")
tablelist.append(tvupdates)
tvupdatedata = Table('tvupdatedata', metadata,
Column('seriesid', BIGINT, primary_key = True),
Column('timestamp', VARCHAR(15)),
schema = "updates")
tablelist.append(tvupdatedata)
newactorlinks = Table('newactorlinks', metadata,
Column('id', BIGINT, Sequence('tempepisodejson_id_seq'), primary_key = True),
Column('actorid', INTEGER),
Column('characterid', INTEGER),
schema = "updates")
tablelist.append(newactorlinks)
return(tablelist)
def create(self, Base, engine, metadata, session, tablelist):
tablelist.remove(tablelist[6])
print('Creating Temporary JSON Tables')
try:
Base.metadata.create_all(engine, tables=tablelist)
except sqlalchemy.exc.ProgrammingError as pe:
pass
def drop(self, session, tablelist):
for table in tablelist:
if 'tvupdatedata' in table.description:
pass
else:
try:
#print('Dropping ' + str(table))
table.drop()
except sqlalchemy.exc.ProgrammingError as se:
pass
#session.commit()
class CreateTempTables():
global tvnetworknewvals
global tvwebchannelnewvals
global characterjsonnewvals
global seriesjsonnewvals
global episodejsonnewvals
global metadata
global engine
global session
global tablelist
def __init__(self, session, metadata, engine):
# Need to create schema if it does not exist
Base = declarative_base(metadata = metadata)
self.tablelist = self.settables(metadata, engine)
try:
self.drop(session, self.tablelist)
except:
pass
self.create(Base, engine, metadata, session, self.tablelist)
session.commit()
def settables(self, metadata, engine):
tablelist = []
newseriesdata = Table('newseriesdata', metadata,
Column('id', Integer, primary_key=True),
Column('seriesid',INTEGER, unique=True),
Column('thetvdb', String(25)),
Column('tvrage', String(25)),
Column('imdb', String(25)),
Column('language', String(25)),
Column('genres', String(75)),
Column('name', String(150)),
Column('status', String(25)),
Column('premiered', String(25)),
Column('days', String(72)),
Column('time', String(25)),
Column('runtime', String(25)),
Column('rating', String(25)),
Column('type',TEXT),
Column('summary',TEXT),
Column('medium',TEXT),
Column('original',TEXT),
Column('weight',INTEGER),
Column('networkid', BIGINT),
Column('webchannelid', BIGINT),
Column('officalsite',TEXT),
Column('url',TEXT),
Column('serieslink',TEXT),
Column('previousepisode',TEXT),
Column('nextepisode',TEXT),
schema="updates",
extend_existing=True)
tablelist.append(newseriesdata)
newactordata = Table('newactordata', metadata,
Column('id', Integer, primary_key=True),
Column('actorid', INTEGER),
Column('actorname', VARCHAR(72)),
Column('name', VARCHAR(72)),
Column('countryname', VARCHAR(72)),
Column('countrytimezone', VARCHAR(72)),
Column('birthday', DATE),
Column('deathday', DATE),
Column('gender', VARCHAR(6)),
Column('mediumimage', TEXT),
Column('originalimage', TEXT),
Column('apilink', TEXT),
Column('url', TEXT),
Column('countrycode', VARCHAR(12)),
schema="updates",
extend_existing=True)
tablelist.append(newactordata)
NEWEPDATA_ID = Sequence('newepdata_id_seq', start=1)
newepdata = Table('newepdata', metadata,
Column('id', Integer, primary_key=True),
Column('episodeid', INTEGER),
Column('seriesid', INTEGER),
Column('season', INTEGER),
Column('episodenumber', INTEGER),
Column('episodename', TEXT),
Column('airdate', VARCHAR(32)),
Column('airtime', VARCHAR(32)),
Column('episodesummary', TEXT),
Column('airstamp', VARCHAR(32)),
Column('runtime', VARCHAR(6)),
Column('eplink', TEXT),
Column('mediumimage', TEXT),
Column('url', TEXT),
Column('originalimage', TEXT),
schema="updates",
extend_existing=True)
tablelist.append(newepdata)
newcastdata = Table('newcastdata', metadata,
Column('id', Integer, primary_key=True),
Column('seriesid', INTEGER),
Column('characterid', INTEGER),
Column('actorid', INTEGER),
Column('url', TEXT),
Column('charactername', VARCHAR(128)),
Column('mediumimage', TEXT),
Column('originalimage', TEXT),
Column('apilink', TEXT),
Column('tvmazeilink', TEXT),
Column('playingself', CHAR),
Column('voice', CHAR),
schema="updates",
extend_existing=True)
tablelist.append(newcastdata)
newcrewdata = Table('newcrewdata', metadata,
Column('id', Integer, primary_key=True),
Column('seriesid', INTEGER),
Column('crewid', INTEGER),
Column('type', VARCHAR(128)),
Column('url', TEXT),
Column('name', VARCHAR(256)),
Column('countryid', INTEGER),
Column('birthday', DATE),
Column('deathday', DATE),
Column('gender', VARCHAR(24)),
Column('medium', TEXT),
Column('original', TEXT),
Column('apilink', TEXT),
UniqueConstraint('seriesid', 'crewid', 'type', name='crew_unique'),
schema="updates",
extend_existing=True)
tablelist.append(newcrewdata)
tvnetworks = Table('tvnetworkdata', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(255)),
Column('countryid', String(255)),
schema = "updates",
extend_existing=True)
tablelist.append(tvnetworks)
tvwebchannels = Table('tvwebchanneldata', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(255)),
Column('countryid', String(255)),
schema = "updates",
extend_existing=True)
tablelist.append(tvwebchannels)
countries = Table('newcountrydata', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(255)),
Column('code', String(255)),
Column('timezone', String(255)),
UniqueConstraint('name', 'timezone', name='tz_name_uk'),
schema = "updates",
extend_existing=True)
tablelist.append(countries)
# tvupdates = Table('tvupdates', metadata,
# Column('seriesid', BIGINT, primary_key = True),
# Column('timestamp', VARCHAR(15)),
# schema = "updates",
# extend_existing=True)
# tablelist.append(tvupdates)
return(tablelist)
def create(self, Base, engine, metadata, session, tablelist):
print('Creating Temporary Data Tables')
Base.metadata.create_all(engine, tables=tablelist)
def drop(self, session, tablelist):
print('Dropping temporary update tables.')
for table in tablelist:
try:
print('Dropping ' + str(table))
table.drop()
except sqlalchemy.exc.ProgrammingError as se:
pass