-- 创建宿舍楼表
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 这个文件的?是否是:
你这个问题应该还是 dormitory.db 文件里并没有通过CREATE的SQL语句正确创建了表,以及通过INSERT的SQL语句正确插入了数据。这部分最好也截图补充下,我看下你是怎么操作的。
另外一个问题是,你的数据库文件 dormitory.db 和 你的代码 D:\数据库系统实践作业\实践作业python代码.py 是否在同一个目录下,也就是是否存在 D:\数据库系统实践作业\dormitory.db 这个文件。
还有,你的Python环境是哪个版本?可以执行 python --versioin 打印出来看下。
不知道你这个问题是否已经解决, 如果还没有解决的话:. 指 数据库名.表名
root@‘localhost’ root主机下的所有用户,root是主机名,localhost是用户名,用户名可以设置成任意ip限制用户权限。