第五章 Python SDK
5.1 安装与引入
Python SDK为单文件模块,将 sxdb_client.py 复制到项目目录即可使用。无需安装任何第三方依赖,仅使用Python标准库socket和json模块。
from sxdb_client import SxdbClient, SxdbResultSet
5.2 客户端核心API
| 方法 | 参数 | 说明 |
| connect() | - | 连接服务器 |
| login(user, pass) | 用户名、密码 | 认证登录 |
| open_db(db) | 数据库名 | 打开数据库 |
| execute(db, sql, params) | 库名、SQL、参数 | 执行DDL/DML |
| query(db, sql, params) | 库名、SQL、参数 | 查询数据 |
| batch(db, statements) | 库名、SQL列表 | 批量执行 |
| insert(db, table, data) | 库名、表名、字段字典 | 插入一行 |
| select(db, table, ...) | 多个查询参数 | 简化查询 |
| close() | - | 关闭连接 |
5.3 基本使用示例
from sxdb_client import SxdbClient
使用 context manager 自动管理连接
with SxdbClient("127.0.0.1", 31111) as client:
登录
client.login("admin", "admin123")
client.open_db("myapp")
创建表
client.execute("myapp",
"CREATE TABLE IF NOT EXISTS orders("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"product TEXT, quantity INTEGER, total REAL)")
插入数据 (便捷方法)
client.insert("myapp", "orders", {
"product": "电子书",
"quantity": 3,
"total": 89.7
})
查询数据 (便捷方法)
result = client.select("myapp", "orders",
columns="*", where="quantity > 1",
order_by="total DESC", limit=10)
解析结果
rs = result["data"]
print(rs["columns"]) # ["id","product","quantity","total"]
| for row in rs["rows"]: | print(row) |
| client.close_db("myapp") | 代码5-1 Python 基本使用示例 |
5.4 高级用法:批量操作
from sxdb_client import SxdbClient, SxdbResultSet
client = SxdbClient("127.0.0.1", 31111)
client.connect()
client.login("admin", "admin123")
批量执行多条SQL
result = client.batch("myapp", [
{"sql": "INSERT INTO orders(product,quantity,total) VALUES(?,?,?)",
"params": ["手机", 1, 4999]},
{"sql": "INSERT INTO orders(product,quantity,total) VALUES(?,?,?)",
"params": ["耳机", 2, 198]},
{"sql": "INSERT INTO orders(product,quantity,total) VALUES(?,?,?)",
"params": ["充电器", 1, 129]},
])
print("Batch result:", result)
使用 SxdbResultSet 封装结果
raw = client.query("myapp", "SELECT * FROM orders WHERE total > 100")
rs = SxdbResultSet(raw)
for row in rs:
print(f" {row['product']}: {row['total']:.2f}")
client.close()
代码5-2 Python 批量操作与结果封装