SQLite-Utils Python库使用指南:高效操作SQLite数据库

SQLite-Utils Python库使用指南:高效操作SQLite数据库

【免费下载链接】sqlite-utils Python CLI utility and library for manipulating SQLite databases 【免费下载链接】sqlite-utils 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-utils

概述

SQLite-Utils是一个强大的Python库,它简化了SQLite数据库的操作流程,让开发者能够以更Pythonic的方式与SQLite数据库交互。本文将详细介绍该库的核心功能和使用方法。

快速入门

创建数据库和表

from sqlite_utils import Database

# 创建或连接数据库
db = Database("chickens.db")

# 创建表并插入数据
db.table("chickens").insert_all([
    {"name": "Azi", "color": "blue"},
    {"name": "Lila", "color": "blue"},
    {"name": "Suna", "color": "gold"},
    {"name": "Cardi", "color": "black"}
])

查询数据

# 遍历所有行
for row in db.table("chickens").rows:
    print(row)

# 执行SQL查询
for row in db.query("""
    select color, count(*)
    from chickens group by color
    order by count(*) desc
"""):
    print(row)

数据库连接管理

多种连接方式

# 连接到现有数据库或创建新数据库
db = Database("my_database.db")

# 强制重建数据库
db = Database("my_database.db", recreate=True)

# 使用现有SQLite连接
import sqlite3
conn = sqlite3.connect("my_database.db")
db = Database(conn)

# 内存数据库
db = Database(memory=True)

# 命名内存数据库(支持多线程访问)
db = Database(memory_name="my_shared_database")

高级连接选项

# 禁用递归触发器
db = Database(memory=True, recursive_triggers=False)

# 禁用插件执行
db = Database(memory=True, execute_plugins=False)

# 启用STRICT模式
db = Database("my_database.db", strict=True)

数据库操作

附加数据库

db = Database("first.db")
db.attach("second", "second.db")

# 跨数据库查询
results = db.query("""
    select * from table_in_first
    union all
    select * from second.table_in_second
""")

查询跟踪

def tracer(sql, params):
    print(f"执行的SQL: {sql} - 参数: {params}")

# 全局跟踪
db = Database(memory=True, tracer=tracer)

# 局部跟踪
with db.tracer(print):
    db.table("dogs").insert({"name": "Cleo"})

数据查询与操作

基本查询方法

# 返回字典迭代器
for row in db.query("select * from dogs"):
    print(row)

# 执行更新操作
cursor = db.execute("update dogs set name = 'Cleopaws'")
print(cursor.rowcount)  # 受影响的行数

参数化查询

# 位置参数
db.execute("update dogs set name = ?", ["Cleopaws"])

# 命名参数
dog = next(db.query(
    "select rowid, name from dogs where name = :name",
    {"name": "Cleopaws"}
))

表与视图操作

表访问

# 获取表对象
table = db.table("my_table")

# 字典式访问
table_or_view = db["my_table_or_view_name"]

视图操作

view = db.view("my_view")  # 获取视图对象

列出数据库对象

# 列出所有表
print(db.table_names())

# 列出所有视图
print(db.view_names())

# 遍历表对象
for table in db.tables:
    print(table)

数据检索

行操作

# 遍历所有行
for row in db.table("dogs").rows:
    print(row)

# 条件查询
for row in db.table("dogs").rows_where("age > ?", [3]):
    print(row)

# 自定义列和排序
for row in db.table("dogs").rows_where(
    select='name, age',
    order_by="age desc",
    limit=1
):
    print(row)

获取单条记录

# 通过主键获取
dog = db.table("dogs").get(1)

# 复合主键
db.table("compound_dogs").get(("mixed", 3))

# 处理记录不存在情况
from sqlite_utils.db import NotFoundError
try:
    row = db.table("dogs").get(5)
except NotFoundError:
    print("未找到记录")

表结构管理

查看表结构

print(db.schema)

创建表

# 通过插入数据自动创建表
dogs = db.table("dogs")
dogs.insert({
    "id": 1,
    "name": "Cleo",
    "age": 3,
    "is_good_dog": True,
}, pk="id")

# 显式创建表
db.table("cats").create({
    "id": int,
    "name": str,
    "weight": float,
}, pk="id")

自定义列属性

# 控制列顺序
dogs.insert({
    "id": 1,
    "name": "Cleo",
    "age": 3,
}, pk="id", column_order=("id", "name"))

# 指定列类型
dogs.insert({
    "id": 1,
    "name": "Cleo",
    "age": "5",  # 字符串
}, pk="id", columns={"age": int, "weight": float})

总结

SQLite-Utils库提供了简洁而强大的API,使得Python开发者能够轻松地操作SQLite数据库。从基本的CRUD操作到复杂的表结构管理,该库都提供了直观的方法。通过本文的介绍,您应该已经掌握了使用该库进行数据库开发的核心技能。

【免费下载链接】sqlite-utils Python CLI utility and library for manipulating SQLite databases 【免费下载链接】sqlite-utils 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-utils

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值