def test_search(database_test_file, apple, nodes): for id, node in nodes.items(): assert db.atomic(database_test_file, db.find_node(id)) == node steves = db.atomic( database_test_file, db.find_nodes({'name': 'Steve'}, db._search_like, db._search_starts_with)) assert len(steves) == 2 assert list(map(lambda x: x['name'], steves)) == ['Steve Wozniak', 'Steve Jobs']
def apple(database_test_file, nodes, edges): db.initialize(database_test_file) [ db.atomic(database_test_file, db.add_node(node, id)) for id, node in nodes.items() ] for src, targets in edges.items(): for target in targets: tgt, label = target if label: db.atomic(database_test_file, db.connect_nodes(src, tgt, label)) else: db.atomic(database_test_file, db.connect_nodes(src, tgt)) yield
def test_bulk_operations(database_test_file, nodes, edges): db.initialize(database_test_file) ids = [] bodies = [] for id, body in nodes.items(): ids.append(id) bodies.append(body) # bulk add and confirm db.atomic(database_test_file, db.add_nodes(bodies, ids)) for id, node in nodes.items(): assert db.atomic(database_test_file, db.find_node(id)) == node # bulk upsert and confirm db.atomic(database_test_file, db.upsert_nodes(bodies, ids)) for id, node in nodes.items(): assert db.atomic(database_test_file, db.find_node(id)) == node # bulk connect and confirm sources = [] targets = [] properties = [] for src, tgts in edges.items(): for target in tgts: tgt, label = target sources.append(src) targets.append(tgt) if label: properties.append(label) else: properties.append({}) db.atomic(database_test_file, db.connect_many_nodes(sources, targets, properties)) for src, tgts in edges.items(): actual = [ tuple(json.loads(x) for x in edge) for edge in db.atomic( database_test_file, db.get_connections_one_way(src)) ] for target in tgts: tgt, label = target if label: expected = (src, tgt, label) else: expected = (src, tgt, {}) assert expected in actual # bulk remove and confirm db.atomic(database_test_file, db.remove_nodes(ids)) for id in ids: assert db.atomic(database_test_file, db.find_node(id)) == {}
from database import Province, Station, Train, TimeTable, atomic stations = [(station.name, station.id) for station in Station] stations = dict(stations) print(stations) with atomic(): for timetable in TimeTable: try: timetable.station_id = stations[timetable.station_id] timetable.save() except KeyError: timetable.delete()