Spaces:
Running
Running
File size: 1,462 Bytes
2755fb0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
from sqlalchemy.orm import relationship
import datetime
# 2๋จ๊ณ์์ ๋ง๋ database.py ํ์ผ์์ Base๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
from database import Base
# 1. 'articles' ํ
์ด๋ธ ์ค๊ณ๋
class Article(Base):
__tablename__ = "articles" # ํ
์ด๋ธ ์ด๋ฆ
article_id = Column(Integer, primary_key=True, index=True)
title = Column(String(500)) # 500์๋ก ๊ธธ์ด ์ ํ
body = Column(String(10000)) # 10000์๋ก ๊ธธ์ด ์ ํ
source = Column(String(100), nullable=True) # ์ถ์ฒ (์์ ์๋ ์์)
collected_at = Column(DateTime, default=datetime.datetime.utcnow)
# 'analysis_results' ํ
์ด๋ธ๊ณผ์ ๊ด๊ณ ์ค์ (1:N)
results = relationship("AnalysisResult", back_populates="article")
# 2. 'analysis_results' ํ
์ด๋ธ ์ค๊ณ๋
class AnalysisResult(Base):
__tablename__ = "analysis_results" # ํ
์ด๋ธ ์ด๋ฆ
result_id = Column(Integer, primary_key=True, index=True)
# 'articles' ํ
์ด๋ธ์ 'article_id'๋ฅผ ์ฐธ์กฐํ๋ ์ธ๋ ํค
article_id = Column(Integer, ForeignKey("articles.article_id"))
aggro_score = Column(Float)
mismatch_score = Column(Float)
crossref_score = Column(Float)
final_risk = Column(Float)
analyzed_at = Column(DateTime, default=datetime.datetime.utcnow)
# 'articles' ํ
์ด๋ธ๊ณผ์ ๊ด๊ณ ์ค์
article = relationship("Article", back_populates="results") |