杰瑞科技汇

Python sqlite3创建表怎么写?

核心步骤

使用 sqlite3 创建表通常遵循以下四个步骤:

Python sqlite3创建表怎么写?-图1
(图片来源网络,侵删)
  1. 导入模块:你需要导入 Python 内置的 sqlite3 模块。
  2. 连接数据库:使用 sqlite3.connect() 函数连接到一个 SQLite 数据库文件,如果文件不存在,它会自动创建一个新的。
  3. 创建游标:通过连接对象创建一个 游标,游标是一个指针,用于执行 SQL 命令并获取结果。
  4. 执行 SQL 语句:使用游标的 execute() 方法来执行 CREATE TABLE SQL 命令。
  5. 提交更改:在执行了修改数据库的操作(如创建表、插入数据等)后,必须调用连接对象的 commit() 方法来将更改保存到数据库文件中。
  6. 关闭连接:操作完成后,关闭游标和连接,以释放资源。

基本示例代码

下面是一个完整的、最简单的例子,创建一个名为 users 的表。

import sqlite3
# 1. 连接到数据库 (如果数据库不存在,则会自动创建)
# 'my_database.db' 是数据库文件的名称
conn = sqlite3.connect('my_database.db')
# 2. 创建一个游标对象
cursor = conn.cursor()
# 3. 定义创建表的 SQL 语句
# 使用 f-string 或三引号来定义多行 SQL 语句,可读性更好
create_table_query = """
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE,
    age INTEGER,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
"""
# 4. 执行 SQL 语句
cursor.execute(create_table_query)
# 5. 提交事务,将更改保存到数据库
conn.commit()
print("表 'users' 创建成功!")
# 6. 关闭游标和连接
cursor.close()
conn.close()

代码解释:

  • CREATE TABLE IF NOT EXISTS users (...)
    • CREATE TABLE: 关键字,表示要创建一个新表。
    • IF NOT EXISTS: 这是一个非常推荐使用的子句,它可以防止在脚本重复运行时因表已存在而导致的错误。
    • users: 你要创建的表的名称。
  • id INTEGER PRIMARY KEY AUTOINCREMENT:
    • 定义了一个名为 id 的列。
    • INTEGER: 数据类型为整数。
    • PRIMARY KEY: 主键,用于唯一标识表中的每一行记录。
    • AUTOINCREMENT: 自动递增,当你插入新记录时,如果未指定 id,SQLite 会自动为它分配一个比当前最大值大 1 的整数值。
  • name TEXT NOT NULL:
    • TEXT: 数据类型为文本字符串。
    • NOT NULL: 约束,表示该列不能为空。
  • email TEXT NOT NULL UNIQUE:
    • UNIQUE: 约束,表示该列的值在表中必须是唯一的,不能有重复。
  • age INTEGER: 一个可选的整数列,用于存储年龄。
  • created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP:
    • TIMESTAMP: 数据类型,用于存储日期和时间。
    • DEFAULT CURRENT_TIMESTAMP: 默认值,当插入新记录且未为此列提供值时,它会自动设置为当前的日期和时间。

最佳实践:使用 with 语句

手动管理 cursor.close()conn.close() 有时会忘记,尤其是在程序出现异常时,推荐使用 with 语句(上下文管理器)来自动处理资源的释放。

sqlite3 的连接对象支持 with 语句,当 with 块执行完毕后,连接会自动关闭并提交(除非在块内发生了未捕获的异常)。

Python sqlite3创建表怎么写?-图2
(图片来源网络,侵删)
import sqlite3
# 使用 with 语句,连接会在块结束时自动关闭
with sqlite3.connect('my_database.db') as conn:
    cursor = conn.cursor()
    # 定义表的 SQL 语句
    create_table_query = """
    CREATE TABLE IF NOT EXISTS products (
        product_id INTEGER PRIMARY KEY AUTOINCREMENT,
        product_name TEXT NOT NULL,
        price REAL NOT NULL CHECK(price > 0),
        stock_quantity INTEGER DEFAULT 0
    );
    """
    # 执行 SQL 语句
    cursor.execute(create_table_query)
    # 提交事务 (在 with 块结束时也会自动提交)
    conn.commit()
    print("表 'products' 创建成功!")
# 连接在这里自动关闭

新知识点:

  • REAL: SQLite 中的浮点数类型。
  • CHECK(price > 0): 这是一个 检查约束,它确保 price 列的值必须大于 0,否则插入操作会失败。

如何验证表是否创建成功?

你可以使用 SQLite 的命令行工具(sqlite3)来验证。

  1. 打开终端或命令提示符。

  2. 进入你的 Python 脚本所在的目录。

    Python sqlite3创建表怎么写?-图3
    (图片来源网络,侵删)
  3. 运行以下命令:

    sqlite3 my_database.db
  4. 在 SQLite 提示符 (>) 下,输入 .tables 命令来列出所有表:

    .tables

    你应该能看到 usersproducts(如果你运行了两个示例)。

  5. 你还可以使用 .schema 命令查看表的创建语句:

    .schema users

    这会输出你之前执行的 CREATE TABLE 语句。

步骤 代码/操作 说明
导入 import sqlite3 加载 Python 的 SQLite3 模块。
连接 conn = sqlite3.connect('file.db') 连接或创建数据库文件,返回连接对象。
游标 cursor = conn.cursor() 从连接对象创建游标,用于执行 SQL。
执行 cursor.execute("CREATE TABLE ...") 使用游标执行 SQL 命令。
提交 conn.commit() 保存对数据库的更改(重要!)。
关闭 cursor.close()
conn.close()
释放游标和连接资源。

核心要点:

  • 始终使用 IF NOT EXISTS 来避免重复创建表导致的错误。
  • 为表和列选择有意义的名称,并遵循一致的命名规范(如 snake_case)。
  • 合理使用数据类型和约束(如 PRIMARY KEY, NOT NULL, UNIQUE, CHECK)来保证数据的完整性和有效性。
  • 优先使用 with 语句 来管理数据库连接,使代码更简洁、安全。
分享:
扫描分享到社交APP
上一篇
下一篇