I am trying to connect a graph base to a project tiangolo/full-stack-fastapi-postgresql. But every time I come across an import error. Please tell me, maybe someone faced a similar problem. Backend launch log:
Checking for script in /app/prestart.sh
Running script /app/prestart.sh
INFO:__main__:Initializing service
INFO:__main__:Starting call to '__main__.init', this is the 1st time calling it.
INFO:__main__:Service finished initializing
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
Traceback (most recent call last):
File "/app/app/initial_data.py", line 1, in <module>
from app.dbase.init_db import init_db
File "/app/app/dbase/init_db.py", line 14, in <module>
from neomodel import db as neodb
File "/usr/local/lib/python3.7/site-packages/neomodel/__init__.py", line 3, in <module>
from .core import *
File "/usr/local/lib/python3.7/site-packages/neomodel/core.py", line 9, in <module>
from neomodel.util import Database, classproperty, _UnsavedNode, _get_node_properties
File "/usr/local/lib/python3.7/site-packages/neomodel/util.py", line 8, in <module>
from neo4j.v1 import GraphDatabase, basic_auth, CypherError, SessionError
ImportError: cannot import name 'CypherError' from 'neo4j.v1' (/usr/local/lib/python3.7/site-packages/neo4j/v1/__init__.py)
The code I was callin:
import logging
from sqlalchemy.orm import Session
from app import crud, schemas
from app.core.config import settings
from app.dbase import base
from neomodel import db as neodb
from neomodel import config, install_all_labels
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def init_db(dbase: Session) -> None:
user = crud.user.get_by_email(dbase, email=settings.FIRST_SUPERUSER)
if not user:
user_in = schemas.UserCreate(
email=settings.FIRST_SUPERUSER,
password=settings.FIRST_SUPERUSER_PASSWORD,
is_superuser=True,
)
user = crud.user.create(dbase, obj_in=user_in)
neodb.set_connection("bolt://neo4j:password@neo4j:7687")
person = Profile(email=settings.FIRST_SUPERUSER)
person.save()
country = Country(name="Russia")
country.save()
person.country.connect(country)
The requirements for neomodel state that it requires neo4j 3.0, 3.1, 3.2, or 3.3
See the documentation: https://neomodel.readthedocs.io/en/latest/#requirements