本文档提供了 PySQLit 的完整 API 参考,包括所有公共类、方法、异常和配置选项。API 设计遵循 Python 最佳实践,提供类型提示和详细的文档字符串。
主数据库类,提供完整的数据库操作接口。
frompysqlit.databaseimportEnhancedDatabase# 创建数据库连接db=EnhancedDatabase("myapp.db")
# 或内存数据库db=EnhancedDatabase(":memory:")EnhancedDatabase(
filename: str,
page_size: int=4096,
cache_size: int=100,
timeout: float=5.0,
isolation_level: IsolationLevel=IsolationLevel.REPEATABLE_READ
) ->None参数说明:
filename: 数据库文件路径,":memory:" 表示内存数据库page_size: 页大小,必须是512的倍数cache_size: 页缓存大小timeout: 锁等待超时时间(秒)isolation_level: 事务隔离级别
# 执行SQL语句result=db.execute(
"SELECT * FROM users WHERE age > ?",
(25,)
)
# 执行多个语句db.executemany(
"INSERT INTO users (name, email) VALUES (?, ?)",
[("Alice", "alice@example.com"), ("Bob", "bob@example.com")]
)
# 执行脚本db.executescript(""" CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT); INSERT INTO users (name) VALUES ('Charlie');""")# 手动事务tx_id=db.begin_transaction()
try:
db.execute("UPDATE accounts SET balance = balance - 100 WHERE id = 1")
db.execute("UPDATE accounts SET balance = balance + 100 WHERE id = 2")
db.commit_transaction(tx_id)
exceptExceptionase:
db.rollback_transaction(tx_id)
raise# 上下文管理器withdb.transaction() astx:
db.execute("INSERT INTO users VALUES (?, ?)", (1, "Alice"))
db.execute("INSERT INTO users VALUES (?, ?)", (2, "Bob"))# 创建表db.create_table("users", {
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
"username": "TEXT UNIQUE NOT NULL",
"email": "TEXT UNIQUE NOT NULL",
"age": "INTEGER CHECK(age > 0)",
"created_at": "DATETIME DEFAULT CURRENT_TIMESTAMP"
})
# 删除表db.drop_table("users")
# 获取表信息tables=db.list_tables()
schema=db.get_table_schema("users")# 创建备份backup_path=db.create_backup("daily_backup")
print(f"备份已创建: {backup_path}")
# 列出备份backups=db.list_backups()
forbackupinbackups:
print(f"{backup['name']} - {backup['created']}")
# 恢复备份db.restore_backup("daily_backup")
# 删除备份db.delete_backup("old_backup")表操作类,提供面向对象的表操作接口。
frompysqlit.databaseimportEnhancedTable# 获取表实例table=db.get_table("users")# 插入数据row_id=table.insert_row({
"username": "alice",
"email": "alice@example.com",
"age": 25
})
# 查询数据rows=table.select_all()
rows=table.select_with_condition(
WhereCondition("age", ">", 18)
)
# 更新数据updated=table.update_rows(
{"age": 26},
WhereCondition("username", "=", "alice")
)
# 删除数据deleted=table.delete_rows(
WhereCondition("age", "<", 18)
)# 添加列table.add_column("phone", "TEXT")
# 创建索引table.create_index("idx_username", ["username"], unique=True)
# 删除索引table.drop_index("idx_username")事务管理器,提供ACID事务支持。
frompysqlit.transactionimportTransactionManager, IsolationLevel# 获取事务管理器tx_manager=db.transaction_manager# 开始事务tx_id=tx_manager.begin_transaction(
isolation_level=IsolationLevel.SERIALIZABLE
)
# 提交事务tx_manager.commit_transaction(tx_id)
# 回滚事务tx_manager.rollback_transaction(tx_id)classIsolationLevel(Enum):
READ_UNCOMMITTED="READ UNCOMMITTED"READ_COMMITTED="READ COMMITTED"REPEATABLE_READ="REPEATABLE READ"SERIALIZABLE="SERIALIZABLE"备份管理器,提供高级备份功能。
frompysqlit.backupimportBackupManager# 创建备份管理器backup_mgr=BackupManager("myapp.db")
# 创建备份backup_name=backup_mgr.create_backup("manual_backup")
# 自动备份backup_thread=backup_mgr.auto_backup(interval_hours=24)
# 验证备份is_valid=backup_mgr.validate_backup("manual_backup")行数据模型,提供字典式访问。
frompysqlit.modelsimportRow# 创建行row=Row(
id=1,
username="alice",
email="alice@example.com",
age=25
)
# 访问数据print(row["username"]) # "alice"print(row.username) # "alice"# 转换为字典data=row.to_dict()表模式定义。
frompysqlit.modelsimportTableSchema, ColumnDefinition, DataType# 创建表模式schema=TableSchema("users")
schema.add_column(ColumnDefinition(
name="id",
data_type=DataType.INTEGER,
primary_key=True,
auto_increment=True
))
schema.add_column(ColumnDefinition(
name="username",
data_type=DataType.TEXT,
unique=True,
not_null=True
))WHERE条件构造器。
frompysqlit.modelsimportWhereCondition# 创建条件condition=WhereCondition("age", ">", 18)
condition=WhereCondition("username", "LIKE", "a%")
condition=WhereCondition("email", "IN", ["a@b.com", "c@d.com"])
# 复合条件frompysqlit.modelsimportAndCondition, OrConditioncomplex_condition=AndCondition([
WhereCondition("age", ">", 18),
OrCondition([
WhereCondition("status", "=", "active"),
WhereCondition("role", "=", "admin")
])
])数据库配置类。
frompysqlit.configimportDatabaseConfigconfig=DatabaseConfig(
page_size=4096,
cache_size=100,
max_connections=10,
timeout=5.0,
isolation_level=IsolationLevel.REPEATABLE_READ,
auto_vacuum=True,
foreign_keys=True,
journal_mode="WAL"
)| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
page_size | int | 4096 | 数据库页大小 |
cache_size | int | 100 | 页缓存大小 |
max_connections | int | 10 | 最大连接数 |
timeout | float | 5.0 | 锁等待超时时间 |
isolation_level | IsolationLevel | REPEATABLE_READ | 默认隔离级别 |
auto_vacuum | bool | True | 自动清理空闲页 |
foreign_keys | bool | True | 启用外键约束 |
journal_mode | str | "WAL" | 日志模式 |
PySQLitError
├── DatabaseError
│ ├── ConnectionError
│ ├── TransactionError
│ └── SchemaError
├── StorageError
│ ├── PageError
│ └── FileError
├── ParseError
│ ├── SQLSyntaxError
│ └── ValidationError
└── BackupError
├── BackupCreationError
└── BackupRestoreErrorfrompysqlit.exceptionsimport (
DatabaseError, StorageError, ParseError, TransactionError
)
try:
db.execute("INVALID SQL")
exceptParseErrorase:
print(f"SQL语法错误: {e}")
try:
db.execute("INSERT INTO users VALUES (1, NULL)")
exceptDatabaseErrorase:
print(f"数据库错误: {e}")
try:
withdb.transaction():
db.execute("UPDATE nonexistent SET x = 1")
exceptTransactionErrorase:
print(f"事务错误: {e}")连接池管理。
frompysqlit.poolimportConnectionPool# 创建连接池pool=ConnectionPool(
max_connections=10,
database_path="myapp.db",
timeout=5.0
)
# 获取连接withpool.get_connection() asdb:
users=db.execute("SELECT * FROM users LIMIT 10")
# 或使用上下文管理器withpool.context() asdb:
db.execute("INSERT INTO users VALUES (?, ?)", (1, "Alice"))查询构建器。
frompysqlit.queryimportQueryBuilder# 构建查询query= (QueryBuilder()
.select("id", "username", "email")
.from_table("users")
.where("age", ">", 18)
.where("status", "=", "active")
.order_by("created_at", "DESC")
.limit(10)
)
# 执行查询results=db.execute(str(query), query.params)数据库迁移管理。
frompysqlit.migrationimportMigrationManager# 创建迁移migration=MigrationManager(db)
# 添加迁移migration.add_migration("001_add_users_table", """ CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, email TEXT UNIQUE NOT NULL )""")
# 执行迁移migration.migrate()性能监控器。
frompysqlit.monitorimportPerformanceMonitor# 创建监控器monitor=PerformanceMonitor(db)
# 启用监控monitor.enable()
# 执行查询results=db.execute("SELECT * FROM users")
# 获取统计stats=monitor.get_stats()
print(f"查询次数: {stats['query_count']}")
print(f"平均查询时间: {stats['avg_query_time']}ms")
print(f"缓存命中率: {stats['cache_hit_rate']}%")查询分析器。
frompysqlit.profileimportQueryProfiler# 分析查询profiler=QueryProfiler(db)
result=profiler.profile("SELECT * FROM users WHERE age > 25")
print(f"执行时间: {result.execution_time}ms")
print(f"扫描行数: {result.rows_scanned}")
print(f"使用索引: {result.index_used}")测试专用数据库。
frompysqlit.testingimportTestDatabase# 创建测试数据库test_db=TestDatabase()
# 自动清理withtest_dbasdb:
db.execute("CREATE TABLE test (id INTEGER, name TEXT)")
db.execute("INSERT INTO test VALUES (1, 'Alice')")
# 测试结束后自动清理测试数据生成器。
frompysqlit.testingimportMockDataGenerator# 生成测试数据generator=MockDataGenerator(db)
generator.generate_users(count=1000)
generator.generate_posts(count=5000)调试模式数据库。
frompysqlit.debugimportDebugDatabase# 启用调试模式db=DebugDatabase("myapp.db", debug=True)
# 查看执行计划plan=db.explain("SELECT * FROM users WHERE age > 25")
print(plan)
# 查看锁信息locks=db.get_lock_info()
print(locks)SQL日志记录器。
frompysqlit.debugimportSQLLogger# 启用SQL日志logger=SQLLogger(db)
logger.enable()
# 执行查询db.execute("SELECT * FROM users")
# 查看日志forentryinlogger.get_logs():
print(f"{entry.timestamp}: {entry.sql} ({entry.duration}ms)")提示: 所有API都提供了完整的类型提示和文档字符串,建议使用IDE的自动补全功能来探索更多功能!