SQLite - Python:初学者指南

你好,未来的数据库大师们!我很高兴能成为你们在这个激动人心的旅程中的向导,一起探索SQLite和Python的世界。作为一个教计算机科学多年的老师,我可以向你保证,在这个教程结束时,你将能够像专业人士一样操作数据库。那么,让我们开始吧!

SQLite - Python

安装

在我们开始冒险之前,我们需要确保我们拥有正确的工具。好消息是,如果你安装了Python(我猜你已经安装了),那么你已经有了SQLite!它与Python捆绑在一起,所以不需要额外安装。这难道不便利吗?

Python sqlite3模块API

现在,让我们来谈谈我们节目的明星:sqlite3模块。这个模块是你在Python中操作SQLite数据库的通行证。它提供了一套函数和方法,我们将在整个教程中使用。

下面是我们将要使用的主要方法的表格:

方法 描述
connect() 创建到数据库的连接
cursor() 创建一个游标对象来执行SQL命令
execute() 执行单个SQL命令
executemany() 对所有参数序列执行SQL命令
commit() 提交当前事务
rollback() 从上次调用commit()以来的所有更改回滚数据库
close() 关闭数据库连接

如果现在这些看起来有点神秘,不用担心。我们将在接下来的内容中详细探讨每一个。

连接到数据库

让我们从连接到数据库开始。这就好比在敲打你数据之家的门!

import sqlite3

# 连接到数据库(如果不存在则创建)
conn = sqlite3.connect('my_first_db.db')

print("数据库连接成功!")

# 完成后不要忘记关闭连接
conn.close()

在这个例子中,我们导入了sqlite3模块并使用它的connect()函数来创建到一个名为'my_first_db.db'的数据库的连接。如果这个数据库不存在,SQLite将会为我们创建它。多么周到!

创建一个表

现在我们已经连接上了,让我们创建一个表。将表想象成数据库中的电子表格。

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

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

print("表创建成功!")

conn.commit()
conn.close()

在这里,我们创建了一个名为'students'的表,包含三个列:id,name和age。IF NOT EXISTS子句是我们的安全网 - 它可以防止我们不小心尝试两次创建相同的表时出错。

插入操作

是时候向我们的表中添加一些数据了。这就好比填写我们的电子表格!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# 插入单行数据
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("Alice", 22))

# 插入多行数据
students_data = [("Bob", 19), ("Charlie", 21), ("David", 20)]
cursor.executemany("INSERT INTO students (name, age) VALUES (?, ?)", students_data)

print("数据插入成功!")

conn.commit()
conn.close()

在这个例子中,我们向'students'表中插入数据。我们使用execute()进行单次插入,使用executemany()进行多次插入。?标记是数据的占位符,这有助于防止SQL注入攻击。安全第一!

查询操作

现在,让我们检索我们的数据。这就好比询问我们的数据库它记住了什么!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# 从students表中选取所有行
cursor.execute("SELECT * FROM students")

# 获取所有行
rows = cursor.fetchall()

for row in rows:
print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}")

conn.close()

在这里,我们从我们的'students'表中选择所有行并打印它们。我们的SQL查询中的*意味着"给我所有东西"。这就好比对你的数据库说"芝麻开门"。

更新操作

有时,我们需要更改我们的数据。让我们更新一个学生的年龄:

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# 更新一个学生的年龄
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (23, "Alice"))

print("学生年龄更新成功!")

conn.commit()
conn.close()

在这个例子中,我们更新了'students'表中名为"Alice"的学生的年龄。在继续之前,请确保你已经理解了前面的内容,这样你才能更好地掌握更新操作。

Credits: Image by storyset