Python操作SQLite数据库

SQLite 是一种轻量级的数据库引擎,广泛用于嵌入式设备和小型应用程序。在Python中,SQLite 是一个流行的选择,因为它易于使用、快速、可靠,并且无需独立的服务器进程。本文将深入探讨如何使用 Python 操作 SQLite 数据库,包括创建数据库、表格、插入数据、查询数据等。

主要优点是sqlite在Python中使用通常是以文件的形式存在, 这减少了很多配置工作,主要用于小型项目的数据上传保存。

安装Sqlite3

在 Python 中,SQLite3 已经内置,无需额外安装。可以直接 import sqlite3 来使用它。

python 复制代码
import sqlite3

连接数据库

使用 connect() 函数连接到数据库,并返回一个 Connection 对象。

python 复制代码
conn = sqlite3.connect('example.db')

同样支持指定路径

python 复制代码
# 指定路径为 /path/to/your/database/example.db
conn = sqlite3.connect('/path/to/your/database/example.db')

创建表格

建表(如果已存在则报错)

python 复制代码
# 建表(如果已存在则报错)
create_table_sql = """
CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
);
"""

conn.execute(create_table_sql)

建表(如果已存在则不做操作) 通常就使用这种方式

python 复制代码
# 建表(如果已存在则不做操作)
create_table_sql = """
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
);
"""

conn.execute(create_table_sql)

增删改查

python 复制代码
# 插入数据
def insert_user(name, age):
    sql = "INSERT INTO users (name, age) VALUES (?, ?)"
    conn.execute(sql, (name, age))
    conn.commit()


# 删除数据
def delete_user(user_id):
    sql = "DELETE FROM users WHERE id = ?"
    conn.execute(sql, (user_id,))
    conn.commit()


# 更新数据
def update_user(user_id, new_name, new_age):
    sql = "UPDATE users SET name = ?, age = ? WHERE id = ?"
    conn.execute(sql, (new_name, new_age, user_id))
    conn.commit()


# 查询多个数据(返回list)
def fetch_users():
    sql = "SELECT * FROM users"
    return conn.execute(sql).fetchall()

# 查询一个数据
def fetch_users():
    sql = "SELECT * FROM users"
    return conn.execute(sql).fetchone()

# 查询指定数目数据(返回list)
def fetch_users():
    sql = "SELECT * FROM users"
    return conn.execute(sql).fetchmany(10) # 获取10行

综合案例

python 复制代码
import sqlite3

# 连接到 SQLite 数据库,如果不存在将会创建一个新的数据库
conn = sqlite3.connect('example.db')

# 创建表的 SQL 语句
create_table_sql = """
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
);
"""

# 执行创建表的 SQL 语句
conn.execute(create_table_sql)


# 插入数据
def insert_user(name, age):
    sql = "INSERT INTO users (name, age) VALUES (?, ?)"
    conn.execute(sql, (name, age))
    conn.commit()


# 删除数据
def delete_user(user_id):
    sql = "DELETE FROM users WHERE id = ?"
    conn.execute(sql, (user_id,))
    conn.commit()


# 更新数据
def update_user(user_id, new_name, new_age):
    sql = "UPDATE users SET name = ?, age = ? WHERE id = ?"
    conn.execute(sql, (new_name, new_age, user_id))
    conn.commit()


# 查询数据
def fetch_users():
    sql = "SELECT * FROM users"
    return conn.execute(sql).fetchall()


# 插入一些示例数据
insert_user("Alice", 30)
insert_user("Bob", 25)

# 输出所有用户
print("All users:")
for user in fetch_users():
    print(user)

# 更新用户
update_user(1, "Alice Smith", 31)

# 输出所有用户
print("\nAll users after update:")
for user in fetch_users():
    print(user)

# 删除用户
delete_user(2)

# 输出所有用户
print("\nAll users after delete:")
for user in fetch_users():
    print(user)

# 关闭游标对象和数据库连接
conn.close()

运行结果

bash 复制代码
All users:
(1, 'Alice Smith', 31)
(2, 'Alice', 30)
(3, 'Bob', 25)

All users after update:
(1, 'Alice Smith', 31)
(2, 'Alice', 30)
(3, 'Bob', 25)

All users after delete:
(1, 'Alice Smith', 31)
(3, 'Bob', 25)
相关推荐
gf13211111 分钟前
python_高德地图驾车时长查询
数据库·python·mysql
镜子AI3 分钟前
镜子AI技术实践:用 Python 做 GEO 答案的实体提及抽取与归一化(零依赖两阶段方案)
python·ai
I Am a robert girl6 分钟前
从点到面:Superquadric 分解中“几何感知内点精修”的工程拆解
python·ransac·点云处理·三维感知·superquadric·几何基元拟合·内点判定
时间售卖铺10 分钟前
MySQL 日志管理
运维·数据库·mysql·云原生
计算机毕业编程指导师10 分钟前
计算机毕设推荐:基于深度学习的动物图像识别方法研究(Python+Django+PyTorch)
pytorch·python·深度学习·计算机·毕业设计·课程设计·图像识别
Java后端的Ai之路11 分钟前
【AIAgent项目-AI生成PPT-09】灵活排版
前端·vue.js·人工智能·python·powerpoint
秋风点枝18 分钟前
数据库 01 · 体系结构与存储引擎
数据库·mysql
~~刘杨20 分钟前
用 Python 批量处理商品图:抠图、高清放大与图生视频(同步 API 完整示例)
图像处理·python·aigc
小小张说故事22 分钟前
Python 拼字符串为什么别在循环里用 +=?拆开 join 的两遍账:191.8 微秒与 6.8 微秒
python
CodeGL23 分钟前
15、Python 访问数据库
数据库·python