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