数据库和python做一个简易高校管理系统

-- 创建宿舍楼表
CREATE TABLE dormitory_building (  
id INT PRIMARY KEY,  
name VARCHAR(50) NOT NULL,  
address VARCHAR(50) NOT NULL,  
manager VARCHAR(50) NOT NULL);
-- 创建房间表
CREATE TABLE room ( 
id INT PRIMARY KEY,  
building_id INT NOT NULL,  
room_number INT NOT NULL,  
number_of_beds INT NOT NULL,  
available_beds INT NOT NULL,  
FOREIGN KEY (building_id) 
REFERENCES dormitory_building(id));
-- 创建学生表
CREATE TABLE student (  
id INT PRIMARY KEY,  
name VARCHAR(50) NOT NULL,  
gender VARCHAR(10) NOT NULL,  
birthday DATE NOT NULL,  
major VARCHAR(50) NOT NULL, 
room_id INT NOT NULL,  
FOREIGN KEY (room_id) 
REFERENCES room(id));
-- 插入测试数据
INSERT INTO dormitory_building VALUES (1, '1号宿舍楼', 'XX路XX号', '张三');
INSERT INTO dormitory_building VALUES (2, '2号宿舍楼', 'XX路XX号', '李四');
INSERT INTO room VALUES (1, 1, 101, 4, 4);
INSERT INTO room VALUES (2, 1, 102, 4, 3);
INSERT INTO room VALUES (3, 2, 201, 4, 4);
INSERT INTO student VALUES (1, '小明', '男', '1999-01-01', '计算机科学', 1);
INSERT INTO student VALUES (2, '小红', '女', '1999-02-02', '数学', 1);
INSERT INTO student VALUES (3, '小张', '男', '1999-03-03', '物理', 2);
INSERT INTO student VALUES (4, '小李', '女', '1999-04-04', '化学', 3);

import sqlite3

# 连接数据库
conn = sqlite3.connect('dormitory.db')

# 查询宿舍楼
def get_dormitory_building():
    cursor = conn.execute('SELECT * FROM dormitory_building;')
    for row in cursor:
        print(row)

# 查询某个宿舍楼的房间
def get_room(building_id):
    cursor = conn.execute('SELECT * FROM room WHERE building_id=?;', (building_id,))
    for row in cursor:
        print(row)

# 查询某个房间的学生
def get_student(room_id):
    cursor = conn.execute('SELECT * FROM student WHERE room_id=?;', (room_id,))
    for row in cursor:
        print(row)

# 分配房间
def assign_room(student_id, room_id):
    cursor = conn.execute('UPDATE student SET room_id=? WHERE id=?;', (room_id, student_id))
    conn.commit()
    print('分配成功!')

# 查询某个学生所在的房间
def get_student_room(student_id):
    cursor = conn.execute('SELECT room.* FROM student JOIN room ON student.room_id=room.id WHERE student.id=?;', (student_id,))
    for row in cursor:
        print(row)

# 测试代码
get_dormitory_building()
get_room(1)
get_student(1)
assign_room(4, 1)
get_student_room(4)

# 关闭数据库连接
conn.close(

求请教我的系统为什么会出现以下报错

===================== RESTART: D:\数据库系统实践作业\实践作业python代码.py ====================
Traceback (most recent call last):
  File "D:\数据库系统实践作业\实践作业python代码.py", line 37, in <module>
    get_dormitory_building()
  File "D:\数据库系统实践作业\实践作业python代码.py", line 8, in get_dormitory_building
    cursor = conn.execute('SELECT * FROM dormitory_building;')
sqlite3.OperationalError: no such table: dormitory_building

你在的table是怎么插入到 dormitory.db 这个文件的?是否是:

  1. 使用sqlite3命令打开数据库文件: sqlite3 dormitory.db
  2. 进入交互式程序后,输入创建和插入语句创建表并插入数据,就是你第一部分粘贴的sql语句。
  3. 然后执行你的python代码查询.

你这个问题应该还是 dormitory.db 文件里并没有通过CREATE的SQL语句正确创建了表,以及通过INSERT的SQL语句正确插入了数据。这部分最好也截图补充下,我看下你是怎么操作的。

另外一个问题是,你的数据库文件 dormitory.db 和 你的代码 D:\数据库系统实践作业\实践作业python代码.py 是否在同一个目录下,也就是是否存在 D:\数据库系统实践作业\dormitory.db 这个文件。

还有,你的Python环境是哪个版本?可以执行 python --versioin 打印出来看下。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^