张老师:小李,我们学校最近要升级学工管理系统,你能不能帮我设计一下?
小李:好的张老师!不过我需要了解一些背景信息。您能告诉我系统的主要功能吗?
张老师:主要功能有学生信息录入、成绩查询、宿舍分配等。另外,系统要支持多校区管理,比如南宁校区和其他校区。
小李:明白了!那我们可以先从数据库设计入手,使用MySQL来存储数据。
小李:首先,我们需要创建一个`students`表,用于存储学生的个人信息。
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender ENUM('M', 'F') DEFAULT 'M',
major VARCHAR(100),
campus ENUM('Nanning', 'Other') DEFAULT 'Nanning'
);
张老师:这个表看起来不错。还有其他表吗?
小李:是的,还需要一个`dorms`表来记录宿舍信息:
CREATE TABLE dorms (
id INT AUTO_INCREMENT PRIMARY KEY,
building_name VARCHAR(50),
room_number VARCHAR(20),
campus ENUM('Nanning', 'Other') DEFAULT 'Nanning'
);
张老师:这样就能完成宿舍分配了。接下来怎么实现查询功能呢?
小李:我们可以用Python结合SQLAlchemy ORM来实现。首先安装依赖:
pip install sqlalchemy pymysql
然后定义模型类:
from sqlalchemy import create_engine, Column, Integer, String, Enum
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Student(Base):
__tablename__ = 'students'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
gender = Column(Enum('M', 'F'), default='M')
major = Column(String(100))
campus = Column(Enum('Nanning', 'Other'), default='Nanning')
class Dorm(Base):
__tablename__ = 'dorms'
id = Column(Integer, primary_key=True)
building_name = Column(String(50))
room_number = Column(String(20))
campus = Column(Enum('Nanning', 'Other'), default='Nanning')
张老师:这看起来很专业。最后一步是怎么查询数据呢?
小李:可以用如下代码查询南宁校区的学生信息:
engine = create_engine('mysql+pymysql://username:password@localhost/school_system')
Session = sessionmaker(bind=engine)
session = Session()
nanning_students = session.query(Student).filter_by(campus='Nanning').all()
for student in nanning_students:
print(student.name, student.major)
张老师:非常感谢!这样我们就有了一个完整的解决方案。
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!