|
|
|
from pydantic import BaseModel
|
|
|
|
from sqlalchemy import create_engine, Column, Integer, String, SmallInteger, Date
|
|
|
|
from sqlalchemy.orm import declarative_base # 更新导入路径
|
|
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
|
|
|
|
# 数据库连接配置
|
|
|
|
DATABASE_URL = "postgresql+psycopg2://postgres:DsideaL147258369@10.10.14.71:5432/szjz_db"
|
|
|
|
|
|
|
|
# 创建数据库引擎
|
|
|
|
engine = create_engine(DATABASE_URL)
|
|
|
|
|
|
|
|
# 创建 SessionLocal 类
|
|
|
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
|
|
|
|
|
|
|
# 创建 Base 类
|
|
|
|
Base = declarative_base()
|
|
|
|
|
|
|
|
# 获取数据库会话
|
|
|
|
def get_db():
|
|
|
|
db = SessionLocal()
|
|
|
|
try:
|
|
|
|
yield db
|
|
|
|
finally:
|
|
|
|
db.close()
|
|
|
|
|
|
|
|
# 定义 t_bi_question 表模型
|
|
|
|
class TBIQuestion(Base):
|
|
|
|
__tablename__ = "t_bi_question"
|
|
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
|
question = Column(String(255), nullable=False)
|
|
|
|
state_id = Column(SmallInteger, nullable=False, default=0)
|
|
|
|
sql = Column(String(2048))
|
|
|
|
bar_chart_x_columns = Column(String(255))
|
|
|
|
bar_chart_y_columns = Column(String(255))
|
|
|
|
pie_chart_category_columns = Column(String(255))
|
|
|
|
pie_chart_value_column = Column(String(255))
|
|
|
|
session_id = Column(String(255), nullable=False)
|
|
|
|
excel_file_name = Column(String(255))
|
|
|
|
bar_chart_file_name = Column(String(255))
|
|
|
|
pie_chart_file_name = Column(String(255))
|
|
|
|
report_file_name = Column(String(255))
|
|
|
|
create_time = Column(Date, nullable=False, default="CURRENT_TIMESTAMP")
|
|
|
|
is_system = Column(SmallInteger, nullable=False, default=0)
|
|
|
|
is_collect = Column(SmallInteger, nullable=False, default=0)
|
|
|
|
|
|
|
|
# 创建 Pydantic 模型
|
|
|
|
class TBIQuestionCreate(BaseModel):
|
|
|
|
question: str
|
|
|
|
state_id: int = 0
|
|
|
|
sql: str = None
|
|
|
|
bar_chart_x_columns: str = None
|
|
|
|
bar_chart_y_columns: str = None
|
|
|
|
pie_chart_category_columns: str = None
|
|
|
|
pie_chart_value_column: str = None
|
|
|
|
session_id: str
|
|
|
|
excel_file_name: str = None
|
|
|
|
bar_chart_file_name: str = None
|
|
|
|
pie_chart_file_name: str = None
|
|
|
|
report_file_name: str = None
|
|
|
|
is_system: int = 0
|
|
|
|
is_collect: int = 0
|
|
|
|
|
|
|
|
class TBIQuestionUpdate(BaseModel):
|
|
|
|
question: str = None
|
|
|
|
state_id: int = None
|
|
|
|
sql: str = None
|
|
|
|
bar_chart_x_columns: str = None
|
|
|
|
bar_chart_y_columns: str = None
|
|
|
|
pie_chart_category_columns: str = None
|
|
|
|
pie_chart_value_column: str = None
|
|
|
|
session_id: str = None
|
|
|
|
excel_file_name: str = None
|
|
|
|
bar_chart_file_name: str = None
|
|
|
|
pie_chart_file_name: str = None
|
|
|
|
report_file_name: str = None
|
|
|
|
is_system: int = None
|
|
|
|
is_collect: int = None
|