python-sqlite3

cpp 复制代码
import calendar

from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey,Date
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.orm import declarative_base, sessionmaker
import datetime


engine = create_engine('sqlite:///data//data.db', echo=True)# 创建数据库引擎,使用 SQLite 数据库
Base = declarative_base()# 创建基础类


class Student(Base):# 定义学生表的模型
    __tablename__ = 'Students'
    student_id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String, nullable=False)
    birth_date = Column(Date, nullable=False)
    major = Column(String, nullable=False)
    enrollment_year = Column(Integer, nullable=False)
    StudentKey1 = relationship("Enrollment", back_populates="EnrollmentKey2")

# 定义教师表的模型
class Instructor(Base):
    __tablename__ = 'Instructors'
    instructor_id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    department = Column(String, nullable=False)
    email = Column(String, nullable=False, unique=True)
    # 定义与课程的关系
    # 定义与课程的关系
    InstructorKey1 = relationship("Course", back_populates="CourseKey1")
    # courses = relationship("Enrollment", back_populates="teacher2")
    def __repr__(self):
        return f"Instructor(id={self.instructor_id}, name='{self.name}', department='{self.department}', email='{self.email}')"


# # 定义课程表模型
class Course(Base):
    __tablename__ = 'Courses'
    course_id = Column(Integer, primary_key=True, autoincrement=True)
    course_name = Column(String, nullable=False)
    instructor_id = Column(Integer, ForeignKey('Instructors.instructor_id', ondelete='CASCADE', onupdate='CASCADE'),  nullable=False)
    credits = Column(Float, nullable=False)
    # 定义与教师的关系
    CourseKey1 = relationship("Instructor", back_populates="InstructorKey1")
    CourseKey2 = relationship("Enrollment", back_populates="EnrollmentKey1")


# 定义选课表的模型
class Enrollment(Base):
    __tablename__ = 'Enrollments'
    enrollment_id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, ForeignKey('Students.student_id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    course_id = Column(Integer, ForeignKey('Courses.course_id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False)
    semester = Column(String, nullable=False)
    grade = Column(Float, nullable=True)
    # 定义与学生和课程的关系
    EnrollmentKey1 = relationship("Course", back_populates="CourseKey2")
    EnrollmentKey2 = relationship("Student", back_populates="StudentKey1")

    def __repr__(self):
        return f"Enrollment(id={self.enrollment_id}, student_id={self.student_id}, course_id={self.course_id}, semester='{self.semester}', grade={self.grade})"



Base.metadata.create_all(engine)# 创建所有表
Session = sessionmaker(bind=engine)# 创建一个会话
session = Session()


def getInputNumber(begin, end,m):
    while True:
        try:
            user_input = float(input(f"请选择f{m}({begin}-{end}):"))
            if begin <= user_input <= end:
                return user_input
            else:
                print(f"输入无效。请确保输入的数字在 {begin} 到 {end} 的范围内。")
        except ValueError:
            print("输入无效。请确保输入的是一个数字。")



def getInputString(m):
    print(f"请输入f{m}")
    p=input()
    return p






def menu():
    print("1.增加学生信息")
    print("2.删除学生信息")
    print("3.查询学生信息")
    print("4.修改学生信息")
    print("5.增加教师信息")
    print("6.删除教师信息")
    print("7.查询教师信息")
    print("8.修改教师信息")
    print("9.增加课程信息")
    print("10.删除课程信息")
    print("11.查询课程信息")
    print("12.修改课程信息")
    print("13.教授打分")
    print("13.生成班级成绩报告")



def get_days_in_month(year, month):
    # 获取该月的天数
    _, days_in_month = calendar.monthrange(year, month)
    return days_in_month
def addStudent():
    # name=getInputString("学生名称")
    # year=getInputNumber(1960,2005,"出生年份")
    # month=getInputNumber(1,12,"出生月份")
    # day=getInputNumber(1,12,"出生月份")

    # 示例:添加一个新学生
    new_student = Student(
        name='Alice',
        birth_date=datetime.date(2000, 1, 1),  # YYYY, MM, DD
        major='Computer Science',
        enrollment_year=2018
    )
    # 将新学生添加到会话并提交
    session.add(new_student)
    session.commit()




if __name__ == '__main__':
    while True:
        s=getInputNumber(1,12,"菜单")
        if s==1:
            addStudent()
        elif s==2:
            pass
相关推荐
u0109147604 小时前
CSS组件库如何快速扩展_通过Sass @extend继承基础布局
jvm·数据库·python
爱敲键盘的猴子4 小时前
JVM -- 内存模型(运行时数据区,垃圾回收机制)
jvm
baidu_340998824 小时前
Golang怎么用go-noescape优化性能_Golang如何使用编译器指令控制逃逸分析行为【进阶】
jvm·数据库·python
m0_678485454 小时前
如何利用虚拟 DOM 实现无痕刷新?基于 VNode 对比的状态保持技巧
jvm·数据库·python
qq_342295824 小时前
CSS如何实现透明背景效果_通过RGBA色彩模式控制透明度
jvm·数据库·python
TechWayfarer4 小时前
知乎/微博的IP属地显示为什么偶尔错误?用IP归属地查询平台自检工具3步验证
网络·python·网络协议·tcp/ip·网络安全
Greyson14 小时前
CSS如何处理超长文本换行问题_结合word-wrap属性
jvm·数据库·python
justjinji5 小时前
如何批量更新SQL数据表_使用UPDATE JOIN语法提升效率
jvm·数据库·python
小江的记录本5 小时前
【网络安全】《网络安全常见攻击与防御》(附:《六大攻击核心特性横向对比表》)
java·网络·人工智能·后端·python·安全·web安全
贵沫末5 小时前
python——打包自己的库并安装
开发语言·windows·python