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

Loading…
Cancel
Save