def test_merge_missing_mbids(conn): from sqlalchemy.orm import Session from mbdata.sample_data import create_sample_data create_sample_data(Session(conn)) prepare_database( conn, """ TRUNCATE track_mbid CASCADE; INSERT INTO track_mbid (track_id, mbid, submission_count) VALUES (1, '97edb73c-4dac-11e0-9096-0025225356f3', 1); INSERT INTO track_mbid (track_id, mbid, submission_count) VALUES (1, 'b81f83ee-4da4-11e0-9ed8-0025225356f3', 1); INSERT INTO track_mbid (track_id, mbid, submission_count) VALUES (1, 'd575d506-4da4-11e0-b951-0025225356f3', 1); INSERT INTO track_mbid (track_id, mbid, submission_count) VALUES (2, 'd575d506-4da4-11e0-b951-0025225356f3', 1); INSERT INTO track_mbid (track_id, mbid, submission_count) VALUES (3, '97edb73c-4dac-11e0-9096-0025225356f3', 1); INSERT INTO track_mbid (track_id, mbid, submission_count) VALUES (4, '5d0290a6-4dad-11e0-a47a-0025225356f3', 1); INSERT INTO musicbrainz.recording_gid_redirect (new_id, gid) VALUES (7134047, 'd575d506-4da4-11e0-b951-0025225356f3'), (7134048, '5d0290a6-4dad-11e0-a47a-0025225356f3'), (7134049, 'b44dfb2a-4dad-11e0-bae4-0025225356f3'); """) merge_missing_mbids(conn) rows = conn.execute( "SELECT track_id, mbid FROM track_mbid ORDER BY track_id, mbid" ).fetchall() expected_rows = [ (1, UUID('77ef7468-e8f8-4447-9c7e-52b11272c6cc')), (1, UUID('97edb73c-4dac-11e0-9096-0025225356f3')), (1, UUID('b81f83ee-4da4-11e0-9ed8-0025225356f3')), (2, UUID('77ef7468-e8f8-4447-9c7e-52b11272c6cc')), (3, UUID('97edb73c-4dac-11e0-9096-0025225356f3')), (4, UUID('e6d2be9c-06b7-4a64-911d-076ad4e79c6f')), ] assert_equals(expected_rows, rows)
def setup_package(): global db_fd, db_name app.app.config['TESTING'] = True if use_file_db: db_fd, db_name = tempfile.mkstemp() app.app.config['DATABASE_URI'] = 'sqlite:///{0}'.format(db_name) else: app.app.config['DATABASE_URI'] = 'sqlite:///:memory:' app.setup_db() patch_model_schemas(NO_SCHEMAS) Base.metadata.create_all(app.engine) session = app.Session() create_sample_data(session) session.close() if os.environ.get('MBDATA_DATABASE_ECHO'): app.app.config['DATABASE_ECHO'] = True app.setup_db()
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker import mbdata.config mbdata.config.configure(schema=None) from mbdata.sample_data import create_sample_data from mbdata.models import Base parser = argparse.ArgumentParser(add_help=True, description='Create a small sample database.') parser.add_argument('file', help='path of the db-file') parser.add_argument('--overwrite', '-o', action='store_true', default=False, help='silently overwrite db-file') args = parser.parse_args() if os.path.isfile(args.file): if args.overwrite: os.remove(args.file) else: print("Error: Database file already exists. You may want to use the '-o' flag.", file=sys.stderr) sys.exit(1) engine = create_engine('sqlite:///' + args.file) Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() create_sample_data(session)