def testLinkList(self): DB = pyorient.OrientDB("localhost", 2424) DB.connect("root", "root") db_name = "test_tr" try: DB.db_drop(db_name) except pyorient.PyOrientCommandException as e: print(e) pass finally: db = DB.db_create(db_name, pyorient.DB_TYPE_GRAPH, pyorient.STORAGE_TYPE_MEMORY) pass DB.command("insert into V set key1 = 'row0'") DB.command("insert into V set key1 = 'row1'") DB.command("insert into V set key1 = 'row2'") DB.command("insert into V set key1 = 'row3'") o1 = pyorient.OrientRecordLink("9:0") o2 = pyorient.OrientRecordLink("9:1") o3 = pyorient.OrientRecordLink("9:2") o4 = pyorient.OrientRecordLink("9:3") lList = [o1, o2, o3, o4] rec = DB.record_create(9, {'test': lList, 'key1': 'row4'}) # 9:4 if self.client.version.major > 1: _rec = DB.record_load("#9:4") assert len(_rec.oRecordData['test']) == 4 assert isinstance(_rec.oRecordData['test'][0], pyorient.OrientRecordLink)
def storeRecommendationClusters(self, recommendationCluster, orientclient): menuitems = MenuItems() items = [] cluster = {} dbClustorData = {} dbClustorData['@RecommendationCluster']=cluster newCluster = orientclient.record_create(-1, dbClustorData) clusterrid = newCluster._rid print("Storing recommendation cluster ") for recommendation in recommendationCluster['recommendation']: recItem = {} dbData = {} item = menuitems.loadMenuItemWithId(str(recommendation),orientclient) recItem['in'] = pyorient.OrientRecordLink(item._rid) recItem['out'] = pyorient.OrientRecordLink(clusterrid) dbData['@RecommendedItem'] = recItem newRecItem = orientclient.record_create(-1, dbData) items.append(pyorient.OrientRecordLink(newRecItem._rid)) recommendeditems = {} dbClustorUpdateData = {} recommendeditems['recommendeditems'] = items dbClustorUpdateData['@RecommendationCluster']= recommendeditems print("Updating {} for {} with version {}".format(dbClustorUpdateData, clusterrid, newCluster._version)) orientclient.record_update(clusterrid, clusterrid, dbClustorUpdateData, newCluster._version) print("Returning new recommendation cluster ") return newCluster
def storeRecommendations(self, recommendations, orientclient): recommendationForStore = {} print("Storing recommendation clusters ") for recommendation in recommendations: newCluster = self.storeRecommendationClusters(recommendation, orientclient) recommendationForStore[str(recommendation['master_product_id'])]= pyorient.OrientRecordLink(newCluster._rid) return recommendationForStore
def getStoreMenuItems(self, recommendations, orientclient): menuitems = MenuItems() items = [] for recommendation in recommendations: item = menuitems.loadMenuItemWithId(str(recommendation['master_product_id']),orientclient) items.append( pyorient.OrientRecordLink(item._rid)) return items
def testLinkList(self): DB = pyorient.OrientDB("localhost", 2424) DB.connect("root", "root") db_name = "test_tr" try: DB.db_drop(db_name) except pyorient.PyOrientStorageException as e: print(e) finally: DB.db_create(db_name, pyorient.DB_TYPE_GRAPH, pyorient.STORAGE_TYPE_MEMORY) DB.command("insert into V set key1 = 'row0'") DB.command("insert into V set key1 = 'row1'") DB.command("insert into V set key1 = 'row2'") DB.command("insert into V set key1 = 'row3'") # V is cluster 9 in OrientDB 2.2, in ODB 3.1+ it is cluster 10 o1 = pyorient.OrientRecordLink("10:0") o2 = pyorient.OrientRecordLink("10:1") o3 = pyorient.OrientRecordLink("10:2") o4 = pyorient.OrientRecordLink("10:3") lList = [o1, o2, o3, o4] tx = DB.tx_commit() tx.begin() rec = DB.record_create(-1, {"@V": { 'test': lList, 'key1': 'row4' }}) # 10:4 tx.attach(rec) tx.commit() # Removed major version check _rec = DB.record_load(rec._record_content._rid) assert len(_rec.oRecordData['test']) == 4 assert isinstance(_rec.oRecordData['test'][0], pyorient.OrientRecordLink)