🗄️ 第八章 活用数据库-在应用程序中使用数据库
📄 一句话概括

驱动程序/第三方库=程序与数据库之间的翻译官:你写自己的语言(Python/Java/PHP),它替你把命令译成 SQL 走网络发过去——没有它,程序不认识数据库。

📝 本节和前面几节的关系

8-2 看的是别人家的应用,本节自己动手:程序里想连数据库,靠的不是喊话,而是先装一个库。C++ 课的第十五章(文件操作)讲过「函数库怎么装怎么用」——数据库驱动就是同一件事,只是对方换成了数据库进程。

一、为什么需要驱动

# Python:pip install 后 import,就是「第三方库」
import sqlite3

conn = sqlite3.connect("book_review.db")   # 连接(8-1 四要素的本地版)
cur = conn.cursor()
cur.execute("SELECT * FROM books WHERE id = ?", (1,))  # ? 占位=参数化(7-10!)
row = cur.fetchone()
conn.close()                                # 用完关连接(第三章 close() 老朋友)

二、所有驱动共同的四步舞

  1. 建立连接(花销大!所以后面 8-6 有连接池)
  2. 发送 SQL / 调用方法
  3. 取回结果(游标/结果集)
  4. 关闭连接——忘了关=连接泄漏(7-5 资源不足的常见根因)

三、动手 Demo:Python 跑通「连-查-关」四步舞

# 在线 Python 运行器即可(sqlite3 是标准库,不用装)
import sqlite3

conn = sqlite3.connect(":memory:")     # 内存库,随用随建
cur = conn.cursor()
cur.execute("CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT)")
cur.execute("INSERT INTO books VALUES (1, '数据库入门')")
conn.commit()                          # 事务提交(4-15)——别忘了

cur.execute("SELECT title FROM books WHERE id = ?", (1,))
print(cur.fetchone())                  # ('数据库入门',)
conn.close()                           # 第 4 步:关

【准备块】在线 Python 运行器(非 SQL 运行器);四步舞少一步都不行。

四、30 秒实验

把驱动想成「客服接线员」:你说中文(Python),对方说英语(SQL 协议),接线员双向翻译。挂电话(close)是礼貌也是资源——占线不挂,别的电话打不进来(连接数满,7-5)。

五、常见误区

自测三问 1. 驱动程序解决什么问题?(程序进程与数据库进程之间的协议翻译——封装成语言函数) 2. 驱动的四步舞?(连接→执行→取结果→关闭;连接昂贵,忘了关会泄漏) 3. Python 里 `?` 占位符的意义?(参数化查询——防 7-10 SQL 注入的治本手段)

相关笔记