Example #1
0
def commitUpdates(updates, testing=True):
    '''
    sends the updates to the odok database
    @input: dictionary where each entry is labelled with the main_table id
            and consists of a dictionary where each entry is labeled by the relevant column
    '''

    # write to database
    from odokWriter import odokWriter
    odokOut = odokWriter(testing=testing)
    for key, changes in updates.iteritems():
        odokOut.uppdateTable('main', key, changes)
    odokOut.closeConnections()
    print 'Done!'
Example #2
0
def commitUpdates(updates, testing=True):
    '''
    sends the updates to the odok database
    @input: dictionary where each entry is labelled with the main_table id
            and consists of a dictionary where each entry is labeled by the relevant column
    '''

    # write to database
    from odokWriter import odokWriter
    odokOut = odokWriter(testing=testing)
    for key, changes in updates.iteritems():
        odokOut.uppdateTable('main', key, changes)
    odokOut.closeConnections()
    print 'Done!'
Example #3
0
def odokArtists(artistDict, wikidataList):
    '''
    checks for corresponding artists to wikidata entries.
    Returns a list of updates to be committed to artist_links
    '''
    from odokWriter import odokWriter
    odokConnection = odokWriter()
    odokResults = odokConnection.findInArtist('wiki', wikidataList)

    # match any that already existing
    matched = {}
    for k, v in artistDict.iteritems():
        if v['wikidata'] in odokResults.keys():
            odokId = odokResults[v['wikidata']]['id']
            v['odokId'] = odokId
            matched[str(odokId)] = v['ids'][:]

    # remove any links which already exist in artist_links
    odokResults = odokConnection.findArtistLinks('artist', matched.keys())
    for k, v in artistDict.iteritems():
        if 'odokId' in v.keys():
            odokId = str(v['odokId'])
            if odokId in odokResults.keys():
                odokObjs = odokResults[odokId]
                for o in odokObjs:
                    if o in v['ids']:
                        v['ids'].remove(o)
                        matched[odokId].remove(o)

    # add remaining matches to artist_links
    for k, vals in matched.iteritems():
        for v in vals:
            odokConnection.insertIntoTable('artist_links', {
                'object': v,
                'artist': int(k)
            })
    odokConnection.closeConnections()

    # now remove these from artist
    for k, v in artistDict.iteritems():
        if 'odokId' in v.keys():
            odokObjs = matched[str(v['odokId'])]
            for o in odokObjs:
                if o in v['ids']:
                    v['ids'].remove(o)
    print 'Done updating artist_links!'
Example #4
0
def odokArtists(artistDict, wikidataList):
    '''
    checks for corresponding artists to wikidata entries.
    Returns a list of updates to be committed to artist_links
    '''
    from odokWriter import odokWriter
    odokConnection = odokWriter()
    odokResults = odokConnection.findInArtist('wiki', wikidataList)

    # match any that already existing
    matched = {}
    for k, v in artistDict.iteritems():
        if v['wikidata'] in odokResults.keys():
            odokId = odokResults[v['wikidata']]['id']
            v['odokId'] = odokId
            matched[str(odokId)] = v['ids'][:]

    # remove any links which already exist in artist_links
    odokResults = odokConnection.findArtistLinks('artist', matched.keys())
    for k, v in artistDict.iteritems():
        if 'odokId' in v.keys():
            odokId = str(v['odokId'])
            if odokId in odokResults.keys():
                odokObjs = odokResults[odokId]
                for o in odokObjs:
                    if o in v['ids']:
                        v['ids'].remove(o)
                        matched[odokId].remove(o)

    # add remaining matches to artist_links
    for k, vals in matched.iteritems():
        for v in vals:
            odokConnection.insertIntoTable('artist_links', {'object': v, 'artist': int(k)})
    odokConnection.closeConnections()

    # now remove these from artist
    for k, v in artistDict.iteritems():
        if 'odokId' in v.keys():
            odokObjs = matched[str(v['odokId'])]
            for o in odokObjs:
                if o in v['ids']:
                    v['ids'].remove(o)
    print 'Done updating artist_links!'