连接数据库并创建表
打开数据库并定义模式
连接数据库并创建表 是 CoddyKit 上的免费 Python Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。
什么是 sqlite3?
Python 的标准库自带 sqlite3模块。它让您可以使用SQLite,这是一种轻量级、基于文件的 SQL 数据库,无需单独的服务器。
- 无需安装
- 整个数据库存储在一个文件中
- 非常适合原型、测试和小型应用
import sqlite3
print(sqlite3.version)连接数据库
使用 sqlite3.connect()打开数据库。如果文件不存在,SQLite 会创建它。
传入 ':memory:'会创建一个临时的内存数据库,连接关闭后它就会消失。
import sqlite3
conn = sqlite3.connect(':memory:')
print('Connected:', conn)
conn.close()Cursor 对象
要运行 SQL,您需要一个游标。调用 conn.cursor()获取游标,然后使用 cursor.execute()发送 SQL 语句。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
print('Cursor ready:', cur)
conn.close()创建表
使用 CREATE TABLE定义架构。每一列都需要名称和类型,例如 INTEGER、TEXT或 REAL。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE users (id INTEGER, name TEXT, age INTEGER)')
print('Table created')
conn.close()主键
主键可以唯一标识每一行。声明为 INTEGER PRIMARY KEY 后,SQLite 会自动为您递增该值。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE books (id INTEGER PRIMARY KEY, title TEXT)')
print('books table ready')
conn.close()IF NOT EXISTS
运行两次 CREATE TABLE 会引发错误。添加 IF NOT EXISTS,即可安全地重复运行该语句。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
sql = 'CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, body TEXT)'
cur.execute(sql)
cur.execute(sql)
print('No error on second run')
conn.close()列约束
约束会在数据库层面强制执行数据规则。
NOT NULL要求必须提供值UNIQUE禁止重复值DEFAULT提供备用值
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE accounts (id INTEGER PRIMARY KEY, email TEXT NOT NULL UNIQUE, active INTEGER DEFAULT 1)')
print('accounts table with constraints')
conn.close()查看模式
SQLite 将模式信息存储在 sqlite_master 中。查询它即可列出您的表。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)')
cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
print(cur.fetchall())
conn.close()保存到文件
要持久化数据,请将文件名传递给 connect()。程序结束后,数据库仍会保留。
您必须调用 conn.commit() 才能将更改写入磁盘。
import sqlite3
conn = sqlite3.connect('app.db')
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS items (id INTEGER PRIMARY KEY, name TEXT)')
conn.commit()
print('Saved to app.db')
conn.close()删除表
使用 DROP TABLE 删除表。使用 IF EXISTS,可避免表已不存在时引发错误。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE temp (id INTEGER)')
cur.execute('DROP TABLE IF EXISTS temp')
print('Dropped temp table')
conn.close()始终关闭连接
打开的连接会占用文件句柄。完成操作后,请始终使用 conn.close() 关闭连接,或者使用 with 代码块自动清理。
import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('CREATE TABLE t (id INTEGER)')
conn.close()
print('Connection closed cleanly')快速检查
测试您对创建表的理解。
回顾
您已经学习了 sqlite3 的基础知识。
connect()打开(或创建)数据库文件cursor()为您提供用于运行 SQL 的对象CREATE TABLE使用类型和约束定义模式commit()持久化更改,close()释放连接
接下来,您将插入并读取行。
常见问题解答
「连接数据库并创建表」课时是免费的吗?
是的 — 「连接数据库并创建表」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。
「连接数据库并创建表」这节课中我会学到什么?
打开数据库并定义模式 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Python Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「连接数据库并创建表」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Python Academy 课中编写并运行代码吗?
能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 连接数据库并创建表
- 插入、查询、更新、删除
- 参数化查询
- 事务与上下文管理器