def neo4j(loop): neo4j = Neo4j(loop=loop) neo4j.auth = ('neo4j', 'neo4jneo4j') yield neo4j loop.run_until_complete(neo4j.close())
def neo4j(loop): neo4j = Neo4j(loop=loop) neo4j.auth = ('neo4j', 'neo4jneo4j') try: yield neo4j finally: loop.run_until_complete(neo4j.close())
def __init__(self, username, password, host='127.0.0.1:7474', request_timeout=10, loop=None): self.__url = f'http://{username}:{password}@{host}/' self.__conn = Neo4j(self.__url)
def neo4j(loop, neo4j_params): print('http://{host}:{http_port}'.format_map(neo4j_params)) neo4j = Neo4j(url='http://{host}:{http_port}'.format_map(neo4j_params), auth=neo4j_params['auth'], loop=loop) yield neo4j loop.run_until_complete(neo4j.close())
async def getdata(): # Shove them into Neo4j async with Neo4j(host='127.0.0.1', port=7474, user='******', password='******', database='marriagebottest') as client: _, data = await client.cypher( 'MATCH (n:User {{user_id: 562131796603568158}})')
async def main(): # Read db connection = await asyncpg.connect(user='******', password='******', database='marriagebot', port=5432, host='127.0.0.1') marriages = await connection.fetch("SELECT * FROM marriages") children = await connection.fetch("SELECT * FROM parents") await connection.close() # Shove them into Neo4j async with Neo4j(host='127.0.0.1', port=7474, user='******', password='******', database='marriagebottest') as client: merges = [] for counter, row in enumerate(marriages, start=1, offset=8300): user_identifier = get_identifier() partner_identifier = get_identifier() merges.append( f"MERGE ({user_identifier}:FamilyTreeMember {{user_id: {row['user_id']}}})" ) merges.append( f"MERGE ({partner_identifier}:FamilyTreeMember {{user_id: {row['partner_id']}}})" ) if row['timestamp']: merges.append( f"MERGE ({user_identifier})-[:MARRIED_TO {{timestamp: {row['timestamp'].timestamp()}, guild_id: {row['guild_id']}}}]->({partner_identifier})-[:MARRIED_TO {{timestamp: {row['timestamp'].timestamp()}, guild_id: {row['guild_id']}}}]->({user_identifier})" ) else: merges.append( f"MERGE ({user_identifier})-[:MARRIED_TO {{guild_id: {row['guild_id']}}}]->({partner_identifier})-[:MARRIED_TO {{guild_id: {row['guild_id']}}}]->({user_identifier})" ) if counter % 50 == 0: print(f"Running {' '.join(merges)};") await client.cypher(' '.join(merges) + ';') merges.clear() for counter, row in enumerate(children, start=1): parent_identifier = get_identifier() child_identifier = get_identifier() merges.append( f"MERGE ({parent_identifier}:FamilyTreeMember {{user_id: {row['parent_id']}}})" ) merges.append( f"MERGE ({child_identifier}:FamilyTreeMember {{user_id: {row['child_id']}}})" ) if row['timestamp']: merges.append( f"MERGE ({parent_identifier})-[:PARENT_OF {{timestamp: {row['timestamp'].timestamp()}, guild_id: {row['guild_id']}}}]->({child_identifier})-[:CHILD_OF {{timestamp: {row['timestamp'].timestamp()}, guild_id: {row['guild_id']}}}]->({parent_identifier})" ) else: merges.append( f"MERGE ({parent_identifier})-[:PARENT_OF {{guild_id: {row['guild_id']}}}]->({child_identifier})-[:CHILD_OF {{guild_id: {row['guild_id']}}}]->({parent_identifier})" ) if counter % 50 == 0: print(f"Running {' '.join(merges)};") await client.cypher(' '.join(merges) + ';') merges.clear() if merges: print(f"Running {' '.join(merges)};") await client.cypher(' '.join(merges) + ';') merges.clear()
async def ph_query(statement): async with Neo4j(ph_graph_url) as conn: data = await conn.cypher(statement) return hydrate(data)
async def query(statement): async with Neo4j(graph_url) as conn: """simple hydrate a dictionary of data base on py2neo2.0 """ data = await conn.cypher(statement) # logging.info("match %s data:%s", statement, data) return hydrate(data)