From 9145ef5df6bcc90b9ed897988c4f09ae8c6578b8 Mon Sep 17 00:00:00 2001 From: j Date: Sat, 19 Aug 2017 18:32:09 +0200 Subject: [PATCH] another fix for new installs --- oml/setup.py | 54 +++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/oml/setup.py b/oml/setup.py index 59c4d2e..85c2bae 100644 --- a/oml/setup.py +++ b/oml/setup.py @@ -487,34 +487,36 @@ def update_database(): item.models.update_sort_table() def add_listitem_index(): - with db.session() as session: - sql = "SELECT COUNT(*) AS c,list_id,item_id FROM listitem GROUP BY list_id, item_id HAVING c>1" - doubles = [r for r in session.execute(sql)] - for r in doubles: - params = {'list_id': r[1], 'item_id': r[2]} - sql = "DELETE FROM listitem WHERE list_id = :list_id AND item_id = :item_id" - session.execute(sql, params) - sql = "INSERT INTO listitem (list_id, item_id) VALUES (:list_id, :item_id)" - session.execute(sql, params) - session.commit() - sql = 'CREATE UNIQUE INDEX IF NOT EXISTS listitem_index on listitem(list_id,item_id)' - session.execute(sql) - session.commit() + if db.table_exists('listitem'): + with db.session() as session: + sql = "SELECT COUNT(*) AS c,list_id,item_id FROM listitem GROUP BY list_id, item_id HAVING c>1" + doubles = [r for r in session.execute(sql)] + for r in doubles: + params = {'list_id': r[1], 'item_id': r[2]} + sql = "DELETE FROM listitem WHERE list_id = :list_id AND item_id = :item_id" + session.execute(sql, params) + sql = "INSERT INTO listitem (list_id, item_id) VALUES (:list_id, :item_id)" + session.execute(sql, params) + session.commit() + sql = 'CREATE UNIQUE INDEX IF NOT EXISTS listitem_index on listitem(list_id,item_id)' + session.execute(sql) + session.commit() def add_useritem_index(): - with db.session() as session: - sql = "SELECT COUNT(*) AS c,user_id,item_id FROM useritem GROUP BY user_id, item_id HAVING c>1" - doubles = [r for r in session.execute(sql)] - for r in doubles: - params = {'user_id': r[1], 'item_id': r[2]} - sql = "DELETE FROM useritem WHERE user_id = :user_id AND item_id = :item_id" - session.execute(sql, params) - sql = "INSERT INTO useritem (user_id, item_id) VALUES (:user_id, :item_id)" - session.execute(sql, params) - session.commit() - sql = 'CREATE UNIQUE INDEX IF NOT EXISTS useritem_index on useritem(user_id,item_id)' - session.execute(sql) - session.commit() + if db.table_exists('useritem'): + with db.session() as session: + sql = "SELECT COUNT(*) AS c,user_id,item_id FROM useritem GROUP BY user_id, item_id HAVING c>1" + doubles = [r for r in session.execute(sql)] + for r in doubles: + params = {'user_id': r[1], 'item_id': r[2]} + sql = "DELETE FROM useritem WHERE user_id = :user_id AND item_id = :item_id" + session.execute(sql, params) + sql = "INSERT INTO useritem (user_id, item_id) VALUES (:user_id, :item_id)" + session.execute(sql, params) + session.commit() + sql = 'CREATE UNIQUE INDEX IF NOT EXISTS useritem_index on useritem(user_id,item_id)' + session.execute(sql) + session.commit() def add_list_username_index(): from sqlalchemy.orm import load_only