新增databases.py把所有建表基类统一成一个,才可以链接外键。
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# .env(放项目根目录,每个人自己建,不提交 Git)
|
# .env(放项目根目录,每个人自己建,不提交 Git)
|
||||||
# 用来修改数据库账户密码
|
# 用来修改数据库账户密码
|
||||||
DB_USER=root
|
DB_USER=root
|
||||||
DB_PASSWORD=
|
DB_PASSWORD=420821
|
||||||
DB_HOST=localhost
|
DB_HOST=localhost
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_NAME=student_manage_system
|
DB_NAME=student_manage_system
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
from databases import engine_all,Base_all,Session
|
||||||
from Teachers.database import *
|
from Teachers.database import *
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from sqlalchemy import *
|
from sqlalchemy import *
|
||||||
@@ -7,7 +8,7 @@ class Gender(str,enum.Enum):
|
|||||||
m = '男'
|
m = '男'
|
||||||
f = '女'
|
f = '女'
|
||||||
|
|
||||||
class Tea(Base):
|
class Tea(Base_all):
|
||||||
__tablename__ = 'teachers'
|
__tablename__ = 'teachers'
|
||||||
id = Column(Integer
|
id = Column(Integer
|
||||||
, primary_key=True
|
, primary_key=True
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
|
from databases import engine_all,Base_all,Session
|
||||||
from sqlalchemy import Column, Integer, String, Date, ForeignKey
|
from sqlalchemy import Column, Integer, String, Date, ForeignKey
|
||||||
from sqlalchemy.dialects.mysql import DATETIME
|
from sqlalchemy.dialects.mysql import DATETIME
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from class_management.database import Base
|
from class_management.database import Base
|
||||||
|
|
||||||
class ClassInfo(Base):
|
class ClassInfo(Base_all):
|
||||||
__tablename__ = 'classes'
|
__tablename__ = 'classes'
|
||||||
|
|
||||||
id = Column(Integer
|
id = Column(Integer
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# databases链接数据库
|
||||||
|
|
||||||
|
from sqlalchemy import *
|
||||||
|
from sqlalchemy.orm import sessionmaker,declarative_base
|
||||||
|
|
||||||
|
# 导入.env参数
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
load_dotenv( )
|
||||||
|
DB_USER = os.getenv("DB_USER", "root")
|
||||||
|
DB_PASSWORD = os.getenv("DB_PASSWORD", "")
|
||||||
|
DB_HOST = os.getenv("DB_HOST", "localhost")
|
||||||
|
DB_PORT = os.getenv("DB_PORT", "3306")
|
||||||
|
DB_NAME = os.getenv("DB_NAME", "student_manage_system")
|
||||||
|
|
||||||
|
db_url = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}?charset=utf8mb4"
|
||||||
|
|
||||||
|
engine_all = create_engine(db_url)
|
||||||
|
|
||||||
|
Base_all = declarative_base()
|
||||||
|
|
||||||
|
Session = sessionmaker(bind=engine_all
|
||||||
|
,autoflush=False
|
||||||
|
,autocommit=False)
|
||||||
|
|
||||||
|
def get_db():
|
||||||
|
db = Session()
|
||||||
|
try:
|
||||||
|
yield db
|
||||||
|
finally:
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -20,3 +20,8 @@ def main():
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import uvicorn
|
import uvicorn
|
||||||
uvicorn.run("main:app", host="0.0.0.0", port=59000)
|
uvicorn.run("main:app", host="0.0.0.0", port=59000)
|
||||||
|
"""
|
||||||
|
IPv4 地址 . . . . . . . . . . . . : 192.168.6.40
|
||||||
|
子网掩码 . . . . . . . . . . . . : 255.255.255.0
|
||||||
|
默认网关. . . . . . . . . . . . . : 192.168.6.1
|
||||||
|
"""
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
|
from databases import engine_all,Base_all,Session
|
||||||
from scores.database import Base
|
from scores.database import Base
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from sqlalchemy import DateTime,Column,Integer,String,Float
|
from sqlalchemy import DateTime,Column,Integer,String,Float
|
||||||
class Score(Base):
|
class Score(Base_all):
|
||||||
__tablename__='scores'
|
__tablename__='scores'
|
||||||
id = Column(Integer
|
id = Column(Integer
|
||||||
,primary_key = True
|
,primary_key = True
|
||||||
|
|||||||
+4
-3
@@ -1,3 +1,4 @@
|
|||||||
|
from databases import engine_all,Base_all,Session
|
||||||
from sqlalchemy import ForeignKey
|
from sqlalchemy import ForeignKey
|
||||||
|
|
||||||
from stu_jiuye.database import DATETIME,Base,Column,Integer,String,DATE
|
from stu_jiuye.database import DATETIME,Base,Column,Integer,String,DATE
|
||||||
@@ -30,7 +31,7 @@ from datetime import datetime
|
|||||||
# )
|
# )
|
||||||
|
|
||||||
|
|
||||||
class Employments(Base): #学生就业信息基类
|
class Employments(Base_all): #学生就业信息基类
|
||||||
__tablename__ = 'Employments' #表名
|
__tablename__ = 'Employments' #表名
|
||||||
id = Column(Integer #主键,自增主键
|
id = Column(Integer #主键,自增主键
|
||||||
, primary_key=True
|
, primary_key=True
|
||||||
@@ -68,7 +69,7 @@ class Employments(Base): #学生就
|
|||||||
)
|
)
|
||||||
is_deleted = Column(Integer, default=0) #是否为删除信息,默认为0
|
is_deleted = Column(Integer, default=0) #是否为删除信息,默认为0
|
||||||
|
|
||||||
class Company(Base): #公司信息基类
|
class Company(Base_all): #公司信息基类
|
||||||
__tablename__ = 'Company' #表名
|
__tablename__ = 'Company' #表名
|
||||||
id = Column(Integer
|
id = Column(Integer
|
||||||
, primary_key=True
|
, primary_key=True
|
||||||
@@ -90,7 +91,7 @@ class Company(Base): #公司信
|
|||||||
)
|
)
|
||||||
is_deleted = Column(Integer, default=0)
|
is_deleted = Column(Integer, default=0)
|
||||||
|
|
||||||
class Address(Base):
|
class Address(Base_all):
|
||||||
__tablename__ = 'Address'
|
__tablename__ = 'Address'
|
||||||
id = Column(Integer #地址id,自增主键
|
id = Column(Integer #地址id,自增主键
|
||||||
, primary_key=True
|
, primary_key=True
|
||||||
|
|||||||
+12
-6
@@ -5,17 +5,23 @@ from students.model import students_model
|
|||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
|
||||||
# 合并接口
|
# 合并接口
|
||||||
Students_API = APIRouter()
|
|
||||||
Students_API.include_router(s_api)
|
|
||||||
|
|
||||||
# 自测接口
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def lifespan(app: FastAPI):
|
async def S_Router(Students_API: APIRouter):
|
||||||
Base.metadata.create_all(engine1)
|
Base.metadata.create_all(engine1)
|
||||||
yield
|
yield
|
||||||
engine1.dispose()
|
engine1.dispose()
|
||||||
|
|
||||||
app = FastAPI(title="学生管理系统",lifespan=lifespan) # 这里必须把上面写的加上
|
Students_API = APIRouter(lifespan=S_Router)
|
||||||
|
Students_API.include_router(s_api)
|
||||||
|
|
||||||
|
# 自测接口
|
||||||
|
@asynccontextmanager
|
||||||
|
async def S_Fastapi(app: FastAPI):
|
||||||
|
Base.metadata.create_all(engine1)
|
||||||
|
yield
|
||||||
|
engine1.dispose()
|
||||||
|
|
||||||
|
app = FastAPI(title="学生管理系统",lifespan=S_Fastapi) # 这里必须把上面写的加上
|
||||||
app.include_router(s_api,tags=["students"])
|
app.include_router(s_api,tags=["students"])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
# students_model处理数据库模型
|
# students_model处理数据库模型
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from students.databases import *
|
from databases import engine_all,Base_all,Session
|
||||||
|
from sqlalchemy import *
|
||||||
|
# from students.databases import *
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from sqlalchemy.dialects.mysql import DATETIME
|
from sqlalchemy.dialects.mysql import DATETIME
|
||||||
from students.schema.students_request import SexEnum , EducationEnum
|
from students.schema.students_request import SexEnum , EducationEnum
|
||||||
from sqlalchemy import Enum
|
from sqlalchemy import Enum,ForeignKey,Integer,String
|
||||||
|
|
||||||
class Students(Base):
|
class Students(Base_all):
|
||||||
__tablename__ = 'students'
|
__tablename__ = 'students'
|
||||||
id = Column(Integer
|
id = Column(Integer
|
||||||
, primary_key=True
|
, primary_key=True
|
||||||
@@ -53,10 +55,12 @@ class Students(Base):
|
|||||||
|
|
||||||
# 外键字段
|
# 外键字段
|
||||||
class_id = Column(Integer
|
class_id = Column(Integer
|
||||||
|
, ForeignKey("classes.id")
|
||||||
, comment='学生班级'
|
, comment='学生班级'
|
||||||
, nullable=False )
|
, nullable=False )
|
||||||
|
|
||||||
advisor_id = Column(Integer
|
advisor_id = Column(Integer
|
||||||
|
, ForeignKey("teachers.id")
|
||||||
, comment='顾问ID')
|
, comment='顾问ID')
|
||||||
|
|
||||||
# 额外字段
|
# 额外字段
|
||||||
|
|||||||
Reference in New Issue
Block a user