ImportError:无法从部分初始化的模块“DatabaseService”导入名称“Base”(很可能是由于循环导入)

2024-05-29 11:38:40 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是docs使用sqlalchemy添加一对一映射,这是我的父部件代码:

class Article(Base):
    __tablename__ = 'article'
    id = Column(Integer, primary_key=True, autoincrement=True, nullable=False)
    child = relationship('ArticleContent', uselist=False, back_populates="article")

这是我孩子的零件代码:

class ArticleContent(Base):
    __tablename__ = 'article_content'

    id = Column(Integer, primary_key=True, autoincrement=True, nullable=False)
    article_id = Column(Integer, ForeignKey('article.id'))
    article = relationship('Article', back_populates="article_content")

这是基本零件代码:

from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from dolphin.common.db.ArticleContent import ArticleContent
from dolphin.common.db.Article import Article

Base = declarative_base(class_registry={
     "articleContent": ArticleContent,
     "article": Article
})


class DatabaseService:
    url = "postgresql://postgres:postgresjiang123456@postgres.dolphin.com:5432/dolphin"
    engine = create_engine(url, echo=False, encoding="utf-8")
    Session = sessionmaker(bind=engine)
    session = Session()

现在,当我运行此代码时,它告诉我循环引用:

  File "/home/dolphin/source-share/source/dolphin/pydolphin/dolphin/common/db/DatabaseService.py", line 4, in <module>
    from dolphin.common.db.ArticleContent import ArticleContent
  File "/home/dolphin/apps/pycharm-community-2020.2.2/plugins/python-ce/helpers/pydev/_pydev_bundle/pydev_monkey_qt.py", line 114, in patched_import
    return original_import(name, *args, **kwargs)
  File "/home/dolphin/source-share/source/dolphin/pydolphin/dolphin/common/db/ArticleContent.py", line 7, in <module>
    from dolphin.common.db.DatabaseService import Base
ImportError: cannot import name 'Base' from partially initialized module 'dolphin.common.db.DatabaseService' (most likely due to a circular import) (/home/dolphin/source-share/source/dolphin/pydolphin/dolphin/common/db/DatabaseService.py)

我已经一次又一次地阅读了官方文件,阅读了另一个问题,修改了我的代码,但仍然不起作用,我哪里出了问题?我该怎么做才能让它工作?这是我的文件名树:

enter image description here


Tags: 代码fromimportidtruesourcedbbase

热门问题