簡體   English   中英

SQLAlchemy多對多表,具有多個外鍵整數

[英]SQLAlchemy Many-to-many table with multiple foreign key entires

我是sqlalchemy的新手,我想盡可能簡單但正確地做到這一點。 我想每月跟蹤多個公司之間的域名使用情況,因此我設置了以下表格:

class Company(Base):
    __tablename__ = 'company'

    id = Column(Integer, primary_key = True)
    name = Column('name', String)


class Domains(Base):
    __tablename__ = 'domains'

    id = Column(Integer, primary_key=True)
    name = Column('name', String, unique=True)

class MonthlyUsage(Base):
    '''
    Track domain usage across all
    companies on a monthly basis.
    '''
    __tablename__ = 'monthlyusage'

    month = Column(DateTime)
    company_id = Column(Integer, ForeignKey('company.id'))
    domain_id  = Column(Integer, ForeignKey('domains.id'))

    # <...other columns snipped out...>

    company = relationship('Company', backref='company_assoc')
    domain = relationship('Domains', backref='domain_assoc')

在我添加第二個月的使用詳細信息之前,該方法可以正常工作。 然后,我得到重復的鍵值錯誤:

* sqlalchemy.exc.IntegrityError:(IntegrityError)重復鍵值違反了唯一約束“ monthlyusage_pkey” *

這是否意味着我必須將“每月使用量”分成第三張表? 這似乎不必要地復雜,因為唯一需要的是月份,company_id和domain_id字段。

對我的布局有什么建議,以使其盡可能簡單但仍然正確?

TIA!

好的,我需要向MonthlyUsage添加一個主鍵列。 下面的代碼現在可以工作了...

class MonthlyUsage(Base):
    '''
    Track domain usage across all
    companies on a monthly basis.
    '''
    __tablename__ = 'monthlyusage'

    month = Column(DateTime)
    month_id = Column(Integer, primary_key=True)
    company_id = Column(Integer, ForeignKey('company.id'), primary_key=True)
    domain_id  = Column(Integer, ForeignKey('domains.id'), primary_key=True)

    # <...other columns snipped out...>

    company = relationship('Company', backref='company_assoc')
    domain = relationship('Domains', backref='domain_assoc')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM