def peewee_database(): from playhouse.apsw_ext import APSWDatabase from cozy.db.artwork_cache import ArtworkCache from cozy.db.book import Book from cozy.db.offline_cache import OfflineCache from cozy.db.settings import Settings from cozy.db.storage import Storage from cozy.db.storage_blacklist import StorageBlackList from cozy.db.track import Track models = [ Track, Book, Settings, ArtworkCache, Storage, StorageBlackList, OfflineCache ] print("Setup database...") db_path = '/tmp/cozy_test.db' test_db = APSWDatabase(db_path, pragmas=[('journal_mode', 'wal')]) test_db.bind(models, bind_refs=False, bind_backrefs=False) test_db.connect() test_db.create_tables(models) path_of_test_folder = os.path.dirname(os.path.realpath(__file__)) + '/' with open(path_of_test_folder + 'books.json') as json_file: book_data = json.load(json_file) with open(path_of_test_folder + 'tracks.json') as json_file: track_data = json.load(json_file) Book.insert_many(book_data).execute() for chunk in chunks(track_data, 25): Track.insert_many(chunk).execute() print("Provide database...") yield test_db print("Teardown database...") test_db.drop_tables(models) test_db.close() os.remove(db_path)
def prepare_db(): from playhouse.apsw_ext import APSWDatabase from cozy.db.artwork_cache import ArtworkCache from cozy.db.book import Book from cozy.db.offline_cache import OfflineCache from cozy.db.settings import Settings from cozy.db.storage import Storage from cozy.db.storage_blacklist import StorageBlackList from cozy.db.track import Track models = [ Track, Book, Settings, ArtworkCache, Storage, StorageBlackList, OfflineCache ] print("Setup database...") db_path = '/tmp/cozy_test.db' test_db = APSWDatabase(db_path, pragmas=[('journal_mode', 'wal')]) test_db.bind(models, bind_refs=False, bind_backrefs=False) test_db.connect() test_db.create_tables(models) return db_path, models, test_db
raise if __name__ == '__main__': # template --char "{'name': '', 'stand': '', 'part': , 'manga_debut': , 'anime_debut': , 'wiki': '', 'comment': ''}" --ref "{'name': '', 'reference_type': ''}" --song "{'title': '', 'artist': '', 'link': ''}" parser = argparse.ArgumentParser() parser.add_argument('--character', type=literal_eval_w_traceback) parser.add_argument('--reference', type=literal_eval_w_traceback) parser.add_argument('--song', type=literal_eval_w_traceback, action='append') last = None database.connect() try: database.create_tables([Character, Reference, Song]) except (SQLError, OperationalError) as e: print(e) while True: res = input('Add another one or stop\n') if res == 'stop': break else: try: res = res.strip() args = shlex.split(res) args = parser.parse_args(args) print(args) if args.character is None:
on_delete='RESTRICT', primary_key=True) value = DecimalField(verbose_name='Rank for Place', decimal_places=2) class Quality(ObraModel): """ Race Quality figures for a Race """ race = ForeignKeyField(verbose_name='Quality Race', model=Race, backref='quality', on_update='RESTRICT', on_delete='RESTRICT') value = DecimalField(verbose_name='Race Quality', decimal_places=2) points_per_place = DecimalField(verbose_name='Points per Place', decimal_places=2) with db.connection_context(): db.create_tables([ Series, Event, Race, Person, ObraPersonSnapshot, PendingUpgrade, Result, Points, Rank, Quality ], fail_silently=True) try: db.execute_sql('VACUUM') except Exception as e: logger.warn('Failed to vacuum database: {}'.format(e))