【发布时间】:2021-02-07 19:31:00
【问题描述】:
这里是 SQL 新手,请耐心等待。
我正在尝试存储来自不同新闻网站的标题数据。试图找出正确的数据库结构和 SQLAlchemy 模型,但现在我似乎无法掌握如何创建正确的关系。
现在我已经完成了以下models.py 文件:
class Headline(Base):
__tablename__ = 'headlines'
id = Column(Integer, primary_key=True, index=True)
headline = Column(DateTime)
time_stamp = Column(String)
class NewYorkTimes(Base):
__tablename__ = 'newyorktimes'
id = Column(Integer, primary_key=True)
headline_id = Column(ForeignKey(Headline.id))
headlines = relationship(
'Headline',
primaryjoin="and_(NewYorkTimes.headline_id==Headline.id)"
)
class Times(Base):
__tablename__ = 'times'
id = Column(Integer, primary_key=True)
headline_id = Column(ForeignKey(Headline.id))
headlines = relationship(
'Headline',
primaryjoin="and_(Times.headline_id==Headline.id)"
)
我真的不确定这种关系是否正确......我希望将所有标题存储在 headlines 表中,带有时间戳和文本内容,并在此表中附加新标题,我'想指定它是从哪个站点收集的,所以这个标题 id 被添加到站点特定的表中。
我曾经将数据存储在特定于站点的表中,但我认为这是完全错误的解决方案 - 例如表 Times 与列 id、headline、time_stamp 和其他站点的表具有完全相同的结构,但为此创建 SQLAlchemy 模型可能会否定 DRY 的一切。
【问题讨论】:
-
为什么不在标题表中加入“出版物”列来区分标题的来源?
-
哈哈!哦,snap,你是对的,这只是我以我以前的解决方案设计方式思考的一个例子。你是 100% 正确的,谢谢!
标签: python sql postgresql sqlalchemy