自学内容网 自学内容网

Python快速入门 —— 第四节:数据库操作

第四节:数据库操作

目标:

掌握如何使用SQLite数据库进行简单的数据存储和查询操作,理解数据库的基本概念,并能够将数据持久化存储。

内容:
  1. SQLite简介

    • SQLite是一种轻量级的嵌入式关系型数据库,不需要独立的服务器进程,适合小型应用和学习使用。
  2. 基本操作

    • 连接数据库

      import sqlite3
      conn = sqlite3.connect('students.db')  # 如果数据库不存在,将会自动创建
      cursor = conn.cursor()
      
    • 创建表

      cursor.execute('''
          CREATE TABLE IF NOT EXISTS students (
              id INTEGER PRIMARY KEY AUTOINCREMENT,
              name TEXT NOT NULL,
              age INTEGER,
              major TEXT
          )
      ''')
      
    • 插入数据

      cursor.execute('''
          INSERT INTO students (name, age, major)
          VALUES (?, ?, ?)
      ''', ('Alice', 21, 'Computer Science'))
      conn.commit()  # 提交事务
      
    • 查询数据

      cursor.execute('SELECT * FROM students')
      rows = cursor.fetchall()
      for row in rows:
          print(row)
      
    • 更新数据

      cursor.execute('''
          UPDATE students
          SET age = ?
          WHERE name = ?
      ''', (22, 'Alice'))
      conn.commit()
      
    • 删除数据

      cursor.execute('DELETE FROM students WHERE name = ?', ('Alice',))
      conn.commit()
      
    • 关闭连接

      conn.close()
      
  3. 重新实现学生信息的增删改查

    • :添加新学生信息到数据库。
    • :根据姓名或ID删除学生信息。
    • :更新学生的年龄、专业等信息。
    • :查询所有学生信息或特定学生信息。
  4. 示例代码

    import sqlite3
    
    class StudentDB:
        def __init__(self):
            self.conn = sqlite3.connect('students.db')
            self.cursor = self.conn.cursor()
            self.cursor.execute('''
                CREATE TABLE IF NOT EXISTS students (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    name TEXT NOT NULL,
                    age INTEGER,
                    major TEXT
                )
            ''')
    
        def add_student(self, name, age, major):
            self.cursor.execute('''
                INSERT INTO students (name, age, major)
                VALUES (?, ?, ?)
            ''', (name, age, major))
            self.conn.commit()
    
        def delete_student(self, name):
            self.cursor.execute('DELETE FROM students WHERE name = ?', (name,))
            self.conn.commit()
    
        def update_student(self, name, age=None, major=None):
            if age:
                self.cursor.execute('UPDATE students SET age = ? WHERE name = ?', (age, name))
            if major:
                self.cursor.execute('UPDATE students SET major = ? WHERE name = ?', (major, name))
            self.conn.commit()
    
        def get_student(self, name):
            self.cursor.execute('SELECT * FROM students WHERE name = ?', (name,))
            return self.cursor.fetchone()
    
        def get_all_students(self):
            self.cursor.execute('SELECT * FROM students')
            return self.cursor.fetchall()
    
        def close(self):
            self.conn.close()
    
    # 使用示例
    db = StudentDB()
    db.add_student('Bob', 22, 'Mathematics')
    print(db.get_student('Bob'))
    db.update_student('Bob', age=23)
    db.delete_student('Bob')
    db.close()
    
练习:
  • 创建一个StudentDB类的实例,添加多个学生信息,然后查询并打印所有学生的信息。
  • 更新某个学生的专业为“Data Science”,并验证更新结果。
  • 删除一个学生信息,确保数据库中不再存在该记录。


原文地址:https://blog.csdn.net/huaanxiang/article/details/142298266

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!