欢迎访问宙启技术站
智能推送

使用Python中的sqlite3库进行数据库表格的联合查询

发布时间:2023-12-25 17:25:35

在Python中,可以使用sqlite3库来连接和操作SQLite数据库。SQLite是一款轻量级的数据库管理系统,不需要额外的服务器和配置。下面是使用sqlite3库进行数据库表格的联合查询的示例代码:

首先,我们需要导入sqlite3库,并连接到SQLite数据库。如果数据库不存在,sqlite3库会自动创建一个新的数据库文件:

import sqlite3

# 连接到 SQLite 数据库
conn = sqlite3.connect('database.db')

# 创建一个游标对象
cursor = conn.cursor()

接下来,我们将创建两个表格,一个存储学生信息,另一个存储课程信息。在这两个表格中,我们将使用相同的学生ID字段将它们关联在一起:

# 创建学生表格
cursor.execute('''
    CREATE TABLE IF NOT EXISTS students (
        id INTEGER PRIMARY KEY,
        name TEXT,
        age INTEGER
    )
''')

# 创建课程表格
cursor.execute('''
    CREATE TABLE IF NOT EXISTS courses (
        id INTEGER PRIMARY KEY,
        student_id INTEGER,
        course_name TEXT,
        grade INTEGER
    )
''')

# 添加示例数据到学生表格
cursor.execute('''
    INSERT INTO students (id, name, age)
    VALUES
        (1, 'Alice', 20),
        (2, 'Bob', 21),
        (3, 'Charlie', 19)
''')

# 添加示例数据到课程表格
cursor.execute('''
    INSERT INTO courses (id, student_id, course_name, grade)
    VALUES
        (1, 1, 'Math', 95),
        (2, 1, 'English', 85),
        (3, 2, 'History', 90),
        (4, 3, 'Science', 92)
''')

# 提交事务
conn.commit()

现在,我们已经创建了数据库表格并添加了示例数据。我们可以使用INNER JOIN语句来联合查询学生和课程表格:

# 执行联合查询
cursor.execute('''
    SELECT students.id, students.name, students.age, courses.course_name, courses.grade
    FROM students
    INNER JOIN courses ON students.id = courses.student_id
''')

# 获取查询结果
rows = cursor.fetchall()

# 打印查询结果
for row in rows:
    print(row)

此查询将返回学生表格和课程表格中的学生ID、姓名、年龄、课程名和成绩。我们使用INNER JOIN将两个表格连接起来,并根据学生ID字段进行匹配。

最后,我们需要关闭数据库连接以释放资源:

# 关闭游标和数据库连接
cursor.close()
conn.close()

以上就是使用sqlite3库进行数据库表格的联合查询的示例代码。你可以根据自己的需求修改表格结构和示例数据,并编写适合的SQL查询语句来实现你想要的功能。