當這兩個模型當前位于不同的檔案夾中時,如何正確建立它們之間的外鍵關系?
from sqlalchemy import Column, String, Integer, DateTime, ForeignKey
from testserver.database import Base
from datetime import datetime
class Service(Base):
__tablename__ = 'services'
id = Column(Integer(), primary_key=True)
name = Column(String(25), nullable=False, unique=True)
description = Column(String(80), nullable=False)
date_created = Column(DateTime(), default=datetime.utcnow)
provider_id = Column(String, ForeignKey('provider.id'))
from sqlalchemy import Column, String, Integer, DateTime
from sqlalchemy.orm import relationship
from testserver.database import Base
from datetime import datetime
from testserver.database import db_session
class Provider(Base):
__tablename__ = 'providers'
id = Column(Integer(), primary_key=True)
name = Column(String(25), nullable=False, unique=True)
description = Column(String(80), nullable=False)
date_created = Column(DateTime(), default=datetime.utcnow)
services = relationship(
'Service', cascade='all, delete-orphan', backref='provided_by')
from sqlalchemy.ext.declarative import declared_attr
class Base(object):
__abstract__ = True
@declared_attr
def __tablename__(cls):
return cls.__name__.lower()
上面的代碼目前拋出一個錯誤:
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'services.provider_id' could not find table 'provider' with which to generate a foreign key to target column 'id'
任何建議或解決方案將不勝感激
uj5u.com熱心網友回復:
我假設你在這里有一個錯字:
provider_id = Column(String, ForeignKey('provider.id'))
在關系中,您提供了小寫的模型名稱,而不是表名稱。如果您替換provider為providers(因為它是您的表的名稱),它應該可以解決您的問題
provider_id = Column(String, ForeignKey('providers.id'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/391085.html
標籤:Python 烧瓶 sqlalchemy
