blob: f1749630b1a5e918b6c798688ecf0de4c6871010 [file] [log] [blame]
{
"cells": [
{
"cell_type": "markdown",
"id": "2e236ac7-6f78-4a59-bed7-45f593d060c2",
"metadata": {},
"source": [
"# Basic Samples : Agtype mapper for Psycopg2 driver\n",
"\n",
"You can make transactions and queries for PostgreSQL with Psycopg2.\n",
"\n",
"This module enable to mapping agtype to python class(Path, Vertex, Edge)\n",
"\n",
"## Connect to PostgreSQL and agType setting"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "98a5863c-1e79-438e-81d4-d1f5354a1bdb",
"metadata": {},
"outputs": [],
"source": [
"import psycopg2 \n",
"import age\n",
"\n",
"GRAPH_NAME = \"test_graph\"\n",
"conn = psycopg2.connect(host=\"172.17.0.2\", port=\"5432\", dbname=\"postgres\", user=\"postgres\", password=\"agens\")\n",
"\n",
"age.setUpAge(conn, GRAPH_NAME)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ebcf65a5-de7c-4224-aacc-2695c9e5f8d5",
"metadata": {},
"outputs": [],
"source": [
"with conn.cursor() as cursor:\n",
" try :\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ CREATE (n:Person {name: 'Joe', title: 'Developer'}) $$) as (v agtype); \"\"\", (GRAPH_NAME,) )\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ CREATE (n:Person {name: 'Smith', title: 'Developer'}) $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" CREATE (n:Person {name: 'Tom', title: 'Manager'}) \n",
" RETURN n\n",
" $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" for row in cursor:\n",
" print(\"CREATED::\", row[0])\n",
" \n",
" \n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" MATCH (a:Person {name: 'Joe'}), (b:Person {name: 'Smith'}) CREATE (a)-[r:workWith {weight: 5}]->(b)\n",
" $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" \n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" MATCH (a:Person {name: 'Smith'}), (b:Person {name: 'Tom'}) CREATE (a)-[r:workWith {weight: 3}]->(b)\n",
" $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" \n",
" # When data inserted or updated, You must commit.\n",
" conn.commit()\n",
" except Exception as ex:\n",
" print(type(ex), ex)\n",
" # if exception occurs, you must rollback all transaction. \n",
" conn.rollback()\n",
"\n",
"with conn.cursor() as cursor:\n",
" try:\n",
" print(\"------- [Select Vertices] --------\")\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ MATCH (n) RETURN n $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" for row in cursor:\n",
" vertex = row[0]\n",
" print(vertex.id, vertex.label, vertex[\"name\"], vertex[\"title\"])\n",
" print(\"-->\", vertex)\n",
" \n",
" print(type(cursor))\n",
" print(\"------- [Select Paths] --------\")\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ MATCH p=()-[]->() RETURN p LIMIT 10 $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" for row in cursor:\n",
" path = row[0]\n",
" v1 = path[0]\n",
" e1 = path[1]\n",
" v2 = path[2]\n",
" print(v1.gtype , v1[\"name\"], e1.gtype , e1.label, e1[\"weight\"], v2.gtype , v2[\"name\"])\n",
" print(\"-->\", path)\n",
" except Exception as ex:\n",
" print(type(ex), ex)\n",
" # if exception occurs, you must rollback even though just retrieving.\n",
" conn.rollback()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f45f7c7d-2256-4aea-92f6-e0ad71017feb",
"metadata": {},
"outputs": [],
"source": [
"with conn.cursor() as cursor:\n",
" try:\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" MATCH p=(a)-[b]->(c) RETURN a.name, label(b), c.name \n",
" $$) as (a agtype, b agtype, c agtype); \"\"\", (GRAPH_NAME,))\n",
" for row in cursor:\n",
" print(row[0], row[1], row[2])\n",
" print(\"-->\", row)\n",
" except Exception as ex:\n",
" print(ex)\n",
" conn.rollback()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c40b9076-d45e-43e6-85ae-296ba68a3031",
"metadata": {},
"outputs": [],
"source": [
"with conn.cursor() as cursor:\n",
" try :\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" CREATE (n:Person {name: 'Jack', title: 'Developer', score:-6.45161290322581e+46}) \n",
" $$) as (v agtype); \"\"\", (GRAPH_NAME,) )\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" CREATE (n:Person {name: 'John', title: 'Developer'}) \n",
" $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
"\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" MATCH (a:Person {name: 'Jack'}), (b:Person {name: 'John'}) \n",
" CREATE (a)-[r:workWith {weight: 2}]->(b)\n",
" $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" \n",
" # When data inserted or updated, You must commit \n",
" conn.commit()\n",
" except Exception as ex:\n",
" print(ex)\n",
" conn.rollback()\n",
"\n",
"with conn.cursor() as cursor:\n",
" try :\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" MATCH p=(a )-[b]->(c) RETURN a , b, c \n",
" $$) as (ta agtype, tb agtype, tc agtype); \"\"\", (GRAPH_NAME,))\n",
" \n",
" for row in cursor:\n",
" print(row[0][\"name\"], row[1].properties, row[2][\"name\"])\n",
" \n",
" except Exception as ex:\n",
" print(ex)\n",
" conn.rollback()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "29ffe1b7-86df-446a-9df0-635be25a9eea",
"metadata": {},
"outputs": [],
"source": [
"with conn.cursor() as cursor:\n",
" try:\n",
" cursor.execute(\"\"\"SELECT * from cypher(%s, $$ \n",
" MATCH p=(a)-[b]->(c) RETURN p \n",
" $$) as (v agtype); \"\"\", (GRAPH_NAME,))\n",
" for row in cursor:\n",
" path = row[0]\n",
" print(path[0][\"name\"], path[1].id, path[1].properties, path[2][\"name\"])\n",
" except Exception as ex:\n",
" print(ex)\n",
" conn.rollback()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "428e6ddf-3958-49ff-af73-809b9a1ce42b",
"metadata": {},
"outputs": [],
"source": [
"age.deleteGraph(conn, GRAPH_NAME)\n",
"conn.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a4819e39-9f37-4dd5-bdbd-337b6d289158",
"metadata": {},
"outputs": [],
"source": [
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "02041ef2-9761-4eb3-b270-ded23e1caa6d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}