from sqlalchemy import Column, String, ForeignKey, Integer, Date from sqlalchemy.dialects.mysql import LONGTEXT from sqlalchemy.orm import relationship from Utils.DataBase.MongoHelperUtils import get_mongodb from Utils.DataBase.SqlAlchemyUtils import Base, engine # 企业数据 class Company(Base): __tablename__ = "data_company" id = Column(String(11), primary_key=True) name = Column(String(32), index=True) business_data = relationship("Business", backref="data_company", uselist=False) shareholder_data = relationship("Shareholder", backref="data_company", uselist=False) lawsuit_data = relationship("Lawsuit", backref="data_company") dishonest_data = relationship("Dishonest", backref="data_company") balance_sheet_data = relationship("Balance", backref="data_company") income_sheet_data = relationship("Income", backref="data_company") cashflow_sheet_data = relationship("CashFlow", backref="data_company") def dict(self): __dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns} __dict.update({"business_data": None if not self.business_data else self.business_data.dict()}) __dict.update({"shareholder_data": None if not self.shareholder_data else self.shareholder_data.dict()}) __dict.update({"lawsuit_data": [lawsuit.list() for lawsuit in list(self.lawsuit_data)]}) __dict.update({"dishonest_data": [dishonest.list() for dishonest in list(self.dishonest_data)]}) __dict.update({"balance_sheet_data": [balance.list() for balance in list(self.balance_sheet_data)]}) __dict.update({"income_sheet_data": [income.list() for income in list(self.income_sheet_data)]}) __dict.update({"cashflow_sheet_data": [cashflow.list() for cashflow in list(self.cashflow_sheet_data)]}) return __dict def financial_dict(self, report_date): __dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns} __dict.update({"balance_sheet_data": [b for b in [balance.list() for balance in list(self.balance_sheet_data)] if b.get('截止日期') in report_date]}) __dict.update({"income_sheet_data": [i for i in [income.list() for income in list(self.income_sheet_data)] if i.get('截止日期') in report_date]}) __dict.update({"cashflow_sheet_data": [c for c in [cashflow.list() for cashflow in list(self.cashflow_sheet_data)] if c.get('截止日期') in report_date]}) return __dict # 工商信息 class Business(Base): __tablename__ = "data_bussiness" id = Column(Integer, primary_key=True, autoincrement=True) obj_id = Column(String(24)) _id = Column(String(11), ForeignKey("data_company.id")) def dict(self): mongodb = get_mongodb() item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C3.1_工商信息", _id=self.obj_id) return item # 股东信息 class Shareholder(Base): __tablename__ = "data_shareholder" id = Column(Integer, primary_key=True, autoincrement=True) obj_id = Column(String(24)) _id = Column(String(11), ForeignKey("data_company.id")) def dict(self): mongodb = get_mongodb() item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C3.2_股东信息", _id=self.obj_id) return item.get("股东列表") # 法律诉讼 class Lawsuit(Base): __tablename__ = "data_lawsuit" id = Column(Integer, primary_key=True, autoincrement=True) obj_id = Column(String(24)) _id = Column(String(11), ForeignKey("data_company.id")) def list(self): mongodb = get_mongodb() item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C9.6_法律诉讼", _id=self.obj_id) item.pop('企业ID') return item # 失信人 class Dishonest(Base): __tablename__ = "data_dishonest" id = Column(Integer, primary_key=True, autoincrement=True) obj_id = Column(String(24)) _id = Column(String(11), ForeignKey("data_company.id")) def list(self): mongodb = get_mongodb() item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C9.5_失信人", _id=self.obj_id) item.pop('企业ID') return item # 资产负债表 class Balance(Base): __tablename__ = "data_balance" id = Column(Integer, primary_key=True, autoincrement=True) obj_id = Column(String(24)) reportdate = Column(Date) _id = Column(String(11), ForeignKey("data_company.id")) def list(self): mongodb = get_mongodb() item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C6.1_资产负债表", _id=self.obj_id) item.pop('企业ID') return item # 利润表 class Income(Base): __tablename__ = "data_income" id = Column(Integer, primary_key=True, autoincrement=True) obj_id = Column(String(24)) reportdate = Column(Date) _id = Column(String(11), ForeignKey("data_company.id")) def list(self): mongodb = get_mongodb() item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C6.2_利润表", _id=self.obj_id) item.pop('企业ID') return item # 现金流量表 class CashFlow(Base): __tablename__ = "data_cashflow" id = Column(Integer, primary_key=True, autoincrement=True) obj_id = Column(String(24)) reportdate = Column(Date) _id = Column(String(11), ForeignKey("data_company.id")) def list(self): mongodb = get_mongodb() item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C6.3_现金流量表", _id=self.obj_id) item.pop('企业ID') return item Base.metadata.create_all(bind=engine)