{"id":14959417,"url":"https://github.com/neo4j-examples/movies-python-bolt","last_synced_at":"2025-05-15T14:06:15.061Z","repository":{"id":38815235,"uuid":"68215784","full_name":"neo4j-examples/movies-python-bolt","owner":"neo4j-examples","description":"Neo4j Movies Example application with Flask backend using the neo4j-python-driver","archived":false,"fork":false,"pushed_at":"2025-05-14T15:04:46.000Z","size":311,"stargazers_count":419,"open_issues_count":0,"forks_count":186,"subscribers_count":27,"default_branch":"main","last_synced_at":"2025-05-14T16:25:41.448Z","etag":null,"topics":["bolt","cypher","graph","graph-database","movies-api","neo4j","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neo4j-examples.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-09-14T14:56:44.000Z","updated_at":"2025-05-14T15:04:48.000Z","dependencies_parsed_at":"2023-11-29T16:28:38.017Z","dependency_job_id":"647da124-f39a-44d5-a5b4-f4b7652c24be","html_url":"https://github.com/neo4j-examples/movies-python-bolt","commit_stats":{"total_commits":219,"total_committers":9,"mean_commits":"24.333333333333332","dds":"0.32420091324200917","last_synced_commit":"a83305d2242063203bae5c08876d862bb0954b49"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neo4j-examples%2Fmovies-python-bolt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neo4j-examples%2Fmovies-python-bolt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neo4j-examples%2Fmovies-python-bolt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neo4j-examples%2Fmovies-python-bolt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neo4j-examples","download_url":"https://codeload.github.com/neo4j-examples/movies-python-bolt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254355335,"owners_count":22057354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bolt","cypher","graph","graph-database","movies-api","neo4j","python"],"created_at":"2024-09-24T13:19:40.277Z","updated_at":"2025-05-15T14:06:10.046Z","avatar_url":"https://github.com/neo4j-examples.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"== Neo4j Movies Application: Quick Start\n\nimage:https://github.com/neo4j-examples/movies-python-bolt/actions/workflows/python-sync-app.yml/badge.svg?branch=main[alt=\"CI sync example\", link=\"https://github.com/neo4j-examples/movies-python-bolt/actions/workflows/python-sync-app.yml\"]\nimage:https://github.com/neo4j-examples/movies-python-bolt/actions/workflows/python-async-app.yml/badge.svg?branch=main[alt=\"CI async example\", link=\"https://github.com/neo4j-examples/movies-python-bolt/actions/workflows/python-async-app.yml\"]\n\nimage::http://dev.assets.neo4j.com.s3.amazonaws.com/wp-content/uploads/movie_application.png[float=right,width=400]\n\nThis example application demonstrates how easy it is to get started with http://neo4j.com/developer[Neo4j] in Python.\n\nIt is a very simple web application that uses our Movie graph dataset to provide a search with listing, a detail view and a graph visualization.\n\nWe offer two different ways to run the application: synchronous and asynchronous (using `asyncio`).\n\n=== The Stack\n\nThese are the components of our Web Application:\n\n* Application Type:         Python-Web Application\n* Web framework:\n  - sync: https://palletsprojects.com/p/flask/[Flask] (Micro-Webframework)\n  - async: https://fastapi.tiangolo.com/[FastAPI] (Micro-Webframework)\n* Neo4j Database Connector: https://github.com/neo4j/neo4j-python-driver[Neo4j Python Driver] for Cypher https://neo4j.com/developer/python[Docs]\n* Database:                 Neo4j-Server (4.4 or newer) with multi-database\n* Frontend:                 jquery, bootstrap, https://d3js.org/[d3.js]\n\nProvision a database quickly with https://sandbox.neo4j.com/?usecase=movies[Neo4j Sandbox] or https://neo4j.com/cloud/aura/[Neo4j Aura].\n\n=== Setup\n\nInstall Python 3.9-3.13.\n\nThen get yourself set up with link:http://docs.python-guide.org/en/latest/dev/virtualenvs/[virtualenv] so we don't break any other Python stuff you have on your machine. After you've got that installed let's set up an environment for our app:\n\n[source]\n----\nvirtualenv neo4j-movies\nsource neo4j-movies/bin/activate\n----\n\nThe next step is to install the dependencies for the app with pip (or pip3 for python3):\n\nsync:\n\n[source]\n----\npip install -r requirements-sync.txt\n----\n\nasync:\n\n[source]\n----\npip install -r requirements-async.txt\n----\n\n=== Run locally\n\nAnd finally let's start up a web server:\n\nsync:\n\n[source]\n----\npython movies_sync.py\n# or python3 movies_sync.py\n\nRunning on http://127.0.0.1:8080/\n----\n\nasync:\n\n[source]\n----\npython movies_async.py\n# or python3 movies_async.py\n\nRunning on http://127.0.0.1:8080/\n----\n\nNavigate to http://localhost:8080 and you should see your first Neo4j application\n\n\n=== Changing the Database\nBy default, this example application connects to a remote Neo4j database run by\nNeo4j for this purpose. If you want to connect to a local database, follow these\ninstructions.\n\nStart your local Neo4j Server (http://neo4j.com/download[Download \u0026 Install]),\nopen the http://localhost:7474[Neo4j Browser]. Then install the Movies data set\nwith `:play movies`, click the `CREATE` statement (in some versions, this will not\nbe directly on the first page of the movies example), and hit the triangular\n\"Run\" button.\n\nIf you haven't touched the configuration of your Neo4j Server, the database will\nbe reachable at `neo4j://localhost:7687`.\n\nUse environment variables to let the application know where to connect to the\ndatabase.\n\nsync:\n\n[source]\n----\nNEO4J_URI=neo4j://localhost:7687 NEO4J_DATABASE=neo4j NEO4J_USER=\"\u003cusername\u003e\" NEO4J_PASSWORD=\"\u003cpassword\u003e\" python movies_sync.py\n\nRunning on http://127.0.0.1:8080/\n----\n\nasync:\n\n[source]\n----\nNEO4J_URI=neo4j://localhost:7687 NEO4J_DATABASE=neo4j NEO4J_USER=\"\u003cusername\u003e\" NEO4J_PASSWORD=\"\u003cpassword\u003e\" python movies_async.py\n\nRunning on http://127.0.0.1:8080/\n----\n\n\n=== All Configuration Options\n\nHere are all environment variables that can be used to configure the\napplication.\n\n[%header,cols=2*]\n|===\n|Environment Variable Name\n|Default Value (or N/A)\n\n|PORT\n|8080\n\n|NEO4J_URI\n|neo4j+s://demo.neo4jlabs.com\n\n|NEO4J_USER\n|movies\n\n|NEO4J_PASSWORD\n|movies\n\n|NEO4J_DATABASE\n|movies\n|===\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneo4j-examples%2Fmovies-python-bolt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneo4j-examples%2Fmovies-python-bolt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneo4j-examples%2Fmovies-python-bolt/lists"}