class Movie(object):
def __repr__(self):
string = ""
if self.mid is not None:
string += "mid: %d " % int(self.mid)
if self.original_name is not None:
string += "original_name: '%s' " % self.original_name
if self.finnish_name is not None:
string += "finnish_name: '%s' " % self.finnish_name
if self.year is not None:
string += "year: %d " % int(self.year)
if self.url is not None:
string += "url: %s " % self.url
if self.imdb_url is not None:
string += "imdb_url: %s " % self.imdb_url
return string
class MovieCategory(object):
pass
class DBAccess:
def __init__(self):
self.db = create_engine(\
'postgres://XX:YY@localhost:5432/ZZ',\
encoding="utf8")
self.metadata = BoundMetaData(self.db)
self.initMappings()
def initMappings(self):
self.category_table = Table('movie_category', self.metadata, autoload=True)
mapper(MovieCategory, self.category_table)
self.movies_categories_table = Table('movies_categories', self.metadata,
Column('mid', Integer, ForeignKey("movie.mid")),
Column('mcid', Integer, ForeignKey("movie_category.mcid")))
self.movie_table = Table('movie', self.metadata, autoload=True)
#mapper(Movie, self.movie_table)
moviemapper = mapper(Movie, self.movie_table, properties = dict(
categories = relation(MovieCategory, secondary=self.movies_categories_table,
lazy=False)))
def findMovies(self, moviesearch):
session = create_session(bind_to=self.db)
query = session.query(Movie)
statement = self.movie_table.select()
if moviesearch.finnishTitle is not None:
statement.append_whereclause(func.lower(self.movie_table.c.finnish_name) ==
moviesearch.finnishTitle.lower())
if moviesearch.yearStart is not None:
statement.append_whereclause(self.movie_table.c.year >= moviesearch.yearStart)
if moviesearch.yearEnd is not None:
statement.append_whereclause(self.movie_table.c.year <= moviesearch.yearEnd)
if moviesearch.imdbID is not None:
statement.append_whereclause(or_(func.lower(self.movie_table.c.url).like('%' + moviesearch.imdbID + '%'),
func.lower(self.movie_table.c.imdb_url).like('%' + moviesearch.imdbID + '%')))
db = getdb()
def findIdFromMovietronDB(movieSearch):
global db
movies = db.findMovies(movieSearch)
if movies and len(movies) > 0:
movie = movies[0]
#print movie.finnish_name
for c in movie.categories:
print c
return movies[0].mid
return None