我正在遵循此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)
我一次又一次阅读了官方文档,阅读了另一个问题并调整了我的代码,但仍然无法正常工作,我在哪里出错?我应该怎么做才能使其正常工作?这是我的文件名树: