说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)写一个 Python 程序,使用 sqlite3 模块创建一个简单的数据库,包含一个学生表(id, name, age),并实现以下功能:
本题较难。
Python 代码如下
import sqlite3
def create_students_table(connection):
"""
创建学生表。
参数:
- connection: 数据库连接。
"""
cursor = connection.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')
connection.commit()
def insert_students(connection, students_data):
"""
插入多个学生记录。
参数:
- connection: 数据库连接。
- students_data (list of tuples): 包含学生信息的列表。
"""
cursor = connection.cursor()
cursor.executemany('INSERT INTO students (name, age) VALUES (?, ?)', students_data)
connection.commit()
def query_students_by_age(connection, max_age):
"""
查询年龄小于等于指定值的学生。
参数:
- connection: 数据库连接。
- max_age (int): 指定的最大年龄值。
返回:
- list: 包含查询结果的列表。
"""
cursor = connection.cursor()
cursor.execute('SELECT * FROM students WHERE age <= ?', (max_age,))
return cursor.fetchall()
def update_student_info(connection, student_id, new_name, new_age):
"""
更新学生信息。
参数:
- connection: 数据库连接。
- student_id (int): 学生的 ID。
- new_name (str): 新的学生姓名。
- new_age (int): 新的学生年龄。
"""
cursor = connection.cursor()
cursor.execute('UPDATE students SET name=?, age=? WHERE id=?', (new_name, new_age, student_id))
connection.commit()
def delete_student(connection, student_id):
"""
删除学生记录。
参数:
- connection: 数据库连接。
- student_id (int): 学生的 ID。
"""
cursor = connection.cursor()
cursor.execute('DELETE FROM students WHERE id=?', (student_id,))
connection.commit()
def main():
# 连接数据库
connection = sqlite3.connect("students.db")
# 创建学生表
create_students_table(connection)
# 插入学生记录
students_data = [
('Alice', 20),
('Bob', 22),
('Charlie', 18),
('David', 21)
]
insert_students(connection, students_data)
# 查询年龄小于等于指定值的学生
max_age = 20
result = query_students_by_age(connection, max_age)
print(f"年龄小于等于 {max_age} 的学生:")
print(result)
# 更新学生信息
student_id_to_update = 2
new_name = 'Bob Updated'
new_age = 23
update_student_info(connection, student_id_to_update, new_name, new_age)
# 删除学生记录
student_id_to_delete = 1
delete_student(connection, student_id_to_delete)
# 关闭数据库连接
connection.close()
if __name__ == "__main__":
main()
查看相关链接中的知识。
(完)
更新时间:2024-08-16 22:50:51 标签:python 习题 sqlite3 数据库