Browse Source

add db insert and query that uses the mapping table

master
cinnaboot 7 years ago
parent
commit
ca81ada6b8
  1. 2
      video_metadata/schema.sql
  2. 62
      video_metadata/views/tmdb.py

2
video_metadata/schema.sql

@ -29,12 +29,12 @@ CREATE TABLE movie_details(
title text, title text,
overview text, overview text,
release_date date, release_date date,
original_language text,
poster_path text poster_path text
); );
DROP TABLE IF EXISTS movie_query_mapping; DROP TABLE IF EXISTS movie_query_mapping;
CREATE TABLE movie_query_mapping( CREATE TABLE movie_query_mapping(
query text,
query_id int, query_id int,
movie_id int, movie_id int,
foreign key(query_id) references movie_queries(query_id), foreign key(query_id) references movie_queries(query_id),

62
video_metadata/views/tmdb.py

@ -176,27 +176,28 @@ def makeLocalQuery(query_obj):
cur = conn.cursor() cur = conn.cursor()
results = [] results = []
if query_obj.query_type == query_type.MOVIE: fancy_query = '''SELECT
cur.execute('SELECT * FROM movie_queries WHERE query=?', (query_obj.parsed_query_str,)) md.*
elif query_obj.query_type == query_type.TV_SHOW: FROM
pass movie_queries mq
JOIN movie_query_mapping map ON mq.query_id = map.query_id
rows = cur.fetchall() JOIN movie_details md ON md.movie_id = map.movie_id
logger.debug('number of rows matched: "{}"'.format(len(rows))) WHERE
mq.query = ?'''
if len(rows) > 0:
logger.debug('query string "{}", match found in local db'.format( for row in cur.execute(fancy_query, (query_obj.parsed_query_str, )):
query_obj.parsed_query_str) vr = view_result()
) vr.id = row['movie_id']
vr.title = row['title']
for row in rows: vr.overview = row['overview']
vr = view_result() vr.release_date = row['release_date']
vr.title = row["query"] vr.original_language = row['original_language']
results.append(vr) vr.tmdb_link = "{}{}{}".format(TMDB_MOVIE_LINK_URL, '/', vr.id)
else:
logger.debug('query string "{}", no matches found in local db'.format( if row['poster_path'] != None:
query_obj.parsed_query_str) vr.poster_path = row['poster_path']
)
results.append(vr)
return results return results
@ -271,24 +272,35 @@ def parseTMDBResult(result, query_type):
def storeTMDBQueryResults(query_obj, result_list): def storeTMDBQueryResults(query_obj, result_list):
conn = db.get_db() conn = db.get_db()
cur = conn.cursor() cur = conn.cursor()
query_id = 0
logger.debug('adding query string "{}" into local cache'.format(query_obj.parsed_query_str)) logger.debug('adding query string "{}" into local cache'.format(query_obj.parsed_query_str))
try: try:
cur.execute('BEGIN TRANSACTION')
cur.execute('INSERT INTO movie_queries(query, year) VALUES (?, ?)', cur.execute('INSERT INTO movie_queries(query, year) VALUES (?, ?)',
(query_obj.parsed_query_str, query_obj.movie_year) (query_obj.parsed_query_str, query_obj.movie_year)
) )
query_id = cur.lastrowid
except DatabaseError as e: except DatabaseError as e:
query_obj.errors.append(e) query_obj.errors.append(e)
for result in result_list: for result in result_list:
try: try:
cur.execute("INSERT INTO movie_details(" cur.execute("INSERT INTO movie_details("
+ "movie_id, title, overview, release_date, poster_path)" + "movie_id, title, overview, release_date, original_language, poster_path)"
+ " VALUES (?,?,?,?,?)", + " VALUES (?,?,?,?,?,?)",
(result.id, result.title, result.overview, result.release_date, result.poster_path) (result.id, result.title, result.overview, result.release_date,
result.original_language, result.poster_path)
)
cur.execute("INSERT INTO movie_query_mapping(query_id, movie_id)"
+ " VALUES (?,?)", (query_id, result.id)
) )
except DatabaseError as e: except DatabaseError as e:
query_obj.errors.append(e) query_obj.errors.append(e)
conn.commit() if len(query_obj.errors) == 0:
conn.commit()
else:
conn.rollback()

Loading…
Cancel
Save