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)
예제 #2
0
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()
예제 #3
0
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)