sqlseed 0.1.0__tar.gz → 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sqlseed-0.1.1/.replacements.txt +5 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/PKG-INFO +22 -22
- {sqlseed-0.1.0 → sqlseed-0.1.1}/README.md +21 -21
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/orchestrator.py +1 -1
- {sqlseed-0.1.0 → sqlseed-0.1.1}/.gitignore +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/CHANGELOG.md +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/LICENSE +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/pyproject.toml +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/__init__.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/_utils/__init__.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/_utils/logger.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/_utils/metrics.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/_utils/progress.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/_utils/schema_helpers.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/_utils/sql_safe.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/_version.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/cli/__init__.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/cli/main.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/config/__init__.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/config/loader.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/config/models.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/config/snapshot.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/__init__.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/column_dag.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/constraints.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/expression.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/mapper.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/relation.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/result.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/schema.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/core/transform.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/database/__init__.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/database/_protocol.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/database/optimizer.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/database/raw_sqlite_adapter.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/database/sqlite_utils_adapter.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/generators/__init__.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/generators/_protocol.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/generators/base_provider.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/generators/faker_provider.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/generators/mimesis_provider.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/generators/registry.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/generators/stream.py +0 -0
- {sqlseed-0.1.0 → sqlseed-0.1.1}/src/sqlseed/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlseed
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Declarative SQLite test data generation toolkit
|
|
5
5
|
Project-URL: Homepage, https://github.com/sunbos/sqlseed
|
|
6
6
|
Project-URL: Documentation, https://github.com/sunbos/sqlseed#readme
|
|
@@ -133,7 +133,7 @@ print(result)
|
|
|
133
133
|
|
|
134
134
|
**🧮 表达式引擎 & 约束求解**
|
|
135
135
|
|
|
136
|
-
支持派生列计算(`
|
|
136
|
+
支持派生列计算(`last_eight = card_number[-8:]`),唯一性约束回溯求解,超时保护防止死循环。
|
|
137
137
|
|
|
138
138
|
</td>
|
|
139
139
|
<td>
|
|
@@ -189,10 +189,10 @@ pip install sqlseed[all]
|
|
|
189
189
|
|
|
190
190
|
```bash
|
|
191
191
|
# AI 智能分析插件(LLM 驱动)
|
|
192
|
-
pip install
|
|
192
|
+
pip install sqlseed-ai
|
|
193
193
|
|
|
194
194
|
# MCP 服务器(让 AI 助手直接操作 sqlseed)
|
|
195
|
-
pip install
|
|
195
|
+
pip install mcp-server-sqlseed
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
<details>
|
|
@@ -356,7 +356,7 @@ with sqlseed.connect("app.db", provider="mimesis", locale="zh_CN") as db:
|
|
|
356
356
|
# → orders: 50000 rows
|
|
357
357
|
```
|
|
358
358
|
|
|
359
|
-
> **💡 提示**:如果两张表之间有同名列(如 `
|
|
359
|
+
> **💡 提示**:如果两张表之间有同名列(如 `account_id`),即使没有声明外键约束,sqlseed 也会通过 **SharedPool 隐式关联机制**自动维持跨表一致性。
|
|
360
360
|
|
|
361
361
|
---
|
|
362
362
|
|
|
@@ -447,27 +447,27 @@ sqlseed v2.0 引入了列依赖 DAG 和表达式引擎,支持从已有列计
|
|
|
447
447
|
```yaml
|
|
448
448
|
# 银行卡信息表场景
|
|
449
449
|
tables:
|
|
450
|
-
- name:
|
|
450
|
+
- name: bank_cards
|
|
451
451
|
count: 10000
|
|
452
452
|
columns:
|
|
453
|
-
- name:
|
|
453
|
+
- name: card_number
|
|
454
454
|
generator: pattern
|
|
455
455
|
params:
|
|
456
456
|
regex: "62[0-9]{17}" # 19 位银联卡号
|
|
457
457
|
constraints:
|
|
458
458
|
unique: true
|
|
459
459
|
|
|
460
|
-
- name:
|
|
461
|
-
derive_from:
|
|
460
|
+
- name: last_eight
|
|
461
|
+
derive_from: card_number # 依赖 card_number
|
|
462
462
|
expression: "value[-8:]" # 取后 8 位
|
|
463
463
|
constraints:
|
|
464
464
|
unique: true
|
|
465
465
|
|
|
466
|
-
- name:
|
|
467
|
-
derive_from:
|
|
466
|
+
- name: last_six
|
|
467
|
+
derive_from: card_number
|
|
468
468
|
expression: "value[-6:]" # 取后 6 位
|
|
469
469
|
|
|
470
|
-
- name:
|
|
470
|
+
- name: account_id
|
|
471
471
|
generator: pattern
|
|
472
472
|
params:
|
|
473
473
|
regex: "U[0-9]{10}"
|
|
@@ -476,10 +476,10 @@ tables:
|
|
|
476
476
|
```
|
|
477
477
|
|
|
478
478
|
**运作原理**:
|
|
479
|
-
1. sqlseed 构建列依赖 DAG:`
|
|
479
|
+
1. sqlseed 构建列依赖 DAG:`card_number → last_eight, last_six`
|
|
480
480
|
2. 拓扑排序确定生成顺序
|
|
481
|
-
3. 先生成 `
|
|
482
|
-
4. 如果 `
|
|
481
|
+
3. 先生成 `card_number`,再通过表达式 `value[-8:]` 计算 `last_eight`
|
|
482
|
+
4. 如果 `last_eight` 的唯一性约束失败,回溯重新生成 `card_number`
|
|
483
483
|
|
|
484
484
|
#### 表达式引擎支持的函数
|
|
485
485
|
|
|
@@ -623,23 +623,23 @@ sqlseed replay snapshots/2026-04-15_033000_users.yaml
|
|
|
623
623
|
|
|
624
624
|
```bash
|
|
625
625
|
# 安装 AI 插件
|
|
626
|
-
pip install
|
|
626
|
+
pip install sqlseed-ai
|
|
627
627
|
|
|
628
628
|
# 设置 API Key
|
|
629
629
|
export SQLSEED_AI_API_KEY="your-api-key"
|
|
630
630
|
export SQLSEED_AI_BASE_URL="https://your-llm-api-endpoint"
|
|
631
631
|
|
|
632
632
|
# AI 分析并生成配置
|
|
633
|
-
sqlseed ai-suggest app.db --table
|
|
633
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml
|
|
634
634
|
|
|
635
635
|
# 带自纠正的 AI 建议(默认 3 轮修正)
|
|
636
|
-
sqlseed ai-suggest app.db --table
|
|
636
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml --verify
|
|
637
637
|
|
|
638
638
|
# 指定模型
|
|
639
|
-
sqlseed ai-suggest app.db --table
|
|
639
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml --model gpt-4o
|
|
640
640
|
|
|
641
641
|
# 跳过缓存
|
|
642
|
-
sqlseed ai-suggest app.db --table
|
|
642
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml --no-cache
|
|
643
643
|
```
|
|
644
644
|
|
|
645
645
|
**AI 工作流程**:
|
|
@@ -663,7 +663,7 @@ sqlseed ai-suggest app.db --table card_info --output card_info.yaml --no-cache
|
|
|
663
663
|
|
|
664
664
|
```bash
|
|
665
665
|
# 安装 MCP 服务器
|
|
666
|
-
pip install
|
|
666
|
+
pip install mcp-server-sqlseed
|
|
667
667
|
|
|
668
668
|
# 启动
|
|
669
669
|
python -m mcp_server_sqlseed
|
|
@@ -680,7 +680,7 @@ python -m mcp_server_sqlseed
|
|
|
680
680
|
|
|
681
681
|
这意味着你可以在 AI 助手中说:
|
|
682
682
|
|
|
683
|
-
> "分析 `app.db` 中 `
|
|
683
|
+
> "分析 `app.db` 中 `bank_cards` 表的结构,生成 YAML 配置,然后填充 5000 行数据。"
|
|
684
684
|
|
|
685
685
|
AI 助手会依次调用 `inspect_schema` → `generate_yaml` → `execute_fill`,无需你手动编写任何代码。
|
|
686
686
|
|
|
@@ -81,7 +81,7 @@ print(result)
|
|
|
81
81
|
|
|
82
82
|
**🧮 表达式引擎 & 约束求解**
|
|
83
83
|
|
|
84
|
-
支持派生列计算(`
|
|
84
|
+
支持派生列计算(`last_eight = card_number[-8:]`),唯一性约束回溯求解,超时保护防止死循环。
|
|
85
85
|
|
|
86
86
|
</td>
|
|
87
87
|
<td>
|
|
@@ -137,10 +137,10 @@ pip install sqlseed[all]
|
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
139
|
# AI 智能分析插件(LLM 驱动)
|
|
140
|
-
pip install
|
|
140
|
+
pip install sqlseed-ai
|
|
141
141
|
|
|
142
142
|
# MCP 服务器(让 AI 助手直接操作 sqlseed)
|
|
143
|
-
pip install
|
|
143
|
+
pip install mcp-server-sqlseed
|
|
144
144
|
```
|
|
145
145
|
|
|
146
146
|
<details>
|
|
@@ -304,7 +304,7 @@ with sqlseed.connect("app.db", provider="mimesis", locale="zh_CN") as db:
|
|
|
304
304
|
# → orders: 50000 rows
|
|
305
305
|
```
|
|
306
306
|
|
|
307
|
-
> **💡 提示**:如果两张表之间有同名列(如 `
|
|
307
|
+
> **💡 提示**:如果两张表之间有同名列(如 `account_id`),即使没有声明外键约束,sqlseed 也会通过 **SharedPool 隐式关联机制**自动维持跨表一致性。
|
|
308
308
|
|
|
309
309
|
---
|
|
310
310
|
|
|
@@ -395,27 +395,27 @@ sqlseed v2.0 引入了列依赖 DAG 和表达式引擎,支持从已有列计
|
|
|
395
395
|
```yaml
|
|
396
396
|
# 银行卡信息表场景
|
|
397
397
|
tables:
|
|
398
|
-
- name:
|
|
398
|
+
- name: bank_cards
|
|
399
399
|
count: 10000
|
|
400
400
|
columns:
|
|
401
|
-
- name:
|
|
401
|
+
- name: card_number
|
|
402
402
|
generator: pattern
|
|
403
403
|
params:
|
|
404
404
|
regex: "62[0-9]{17}" # 19 位银联卡号
|
|
405
405
|
constraints:
|
|
406
406
|
unique: true
|
|
407
407
|
|
|
408
|
-
- name:
|
|
409
|
-
derive_from:
|
|
408
|
+
- name: last_eight
|
|
409
|
+
derive_from: card_number # 依赖 card_number
|
|
410
410
|
expression: "value[-8:]" # 取后 8 位
|
|
411
411
|
constraints:
|
|
412
412
|
unique: true
|
|
413
413
|
|
|
414
|
-
- name:
|
|
415
|
-
derive_from:
|
|
414
|
+
- name: last_six
|
|
415
|
+
derive_from: card_number
|
|
416
416
|
expression: "value[-6:]" # 取后 6 位
|
|
417
417
|
|
|
418
|
-
- name:
|
|
418
|
+
- name: account_id
|
|
419
419
|
generator: pattern
|
|
420
420
|
params:
|
|
421
421
|
regex: "U[0-9]{10}"
|
|
@@ -424,10 +424,10 @@ tables:
|
|
|
424
424
|
```
|
|
425
425
|
|
|
426
426
|
**运作原理**:
|
|
427
|
-
1. sqlseed 构建列依赖 DAG:`
|
|
427
|
+
1. sqlseed 构建列依赖 DAG:`card_number → last_eight, last_six`
|
|
428
428
|
2. 拓扑排序确定生成顺序
|
|
429
|
-
3. 先生成 `
|
|
430
|
-
4. 如果 `
|
|
429
|
+
3. 先生成 `card_number`,再通过表达式 `value[-8:]` 计算 `last_eight`
|
|
430
|
+
4. 如果 `last_eight` 的唯一性约束失败,回溯重新生成 `card_number`
|
|
431
431
|
|
|
432
432
|
#### 表达式引擎支持的函数
|
|
433
433
|
|
|
@@ -571,23 +571,23 @@ sqlseed replay snapshots/2026-04-15_033000_users.yaml
|
|
|
571
571
|
|
|
572
572
|
```bash
|
|
573
573
|
# 安装 AI 插件
|
|
574
|
-
pip install
|
|
574
|
+
pip install sqlseed-ai
|
|
575
575
|
|
|
576
576
|
# 设置 API Key
|
|
577
577
|
export SQLSEED_AI_API_KEY="your-api-key"
|
|
578
578
|
export SQLSEED_AI_BASE_URL="https://your-llm-api-endpoint"
|
|
579
579
|
|
|
580
580
|
# AI 分析并生成配置
|
|
581
|
-
sqlseed ai-suggest app.db --table
|
|
581
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml
|
|
582
582
|
|
|
583
583
|
# 带自纠正的 AI 建议(默认 3 轮修正)
|
|
584
|
-
sqlseed ai-suggest app.db --table
|
|
584
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml --verify
|
|
585
585
|
|
|
586
586
|
# 指定模型
|
|
587
|
-
sqlseed ai-suggest app.db --table
|
|
587
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml --model gpt-4o
|
|
588
588
|
|
|
589
589
|
# 跳过缓存
|
|
590
|
-
sqlseed ai-suggest app.db --table
|
|
590
|
+
sqlseed ai-suggest app.db --table bank_cards --output bank_cards.yaml --no-cache
|
|
591
591
|
```
|
|
592
592
|
|
|
593
593
|
**AI 工作流程**:
|
|
@@ -611,7 +611,7 @@ sqlseed ai-suggest app.db --table card_info --output card_info.yaml --no-cache
|
|
|
611
611
|
|
|
612
612
|
```bash
|
|
613
613
|
# 安装 MCP 服务器
|
|
614
|
-
pip install
|
|
614
|
+
pip install mcp-server-sqlseed
|
|
615
615
|
|
|
616
616
|
# 启动
|
|
617
617
|
python -m mcp_server_sqlseed
|
|
@@ -628,7 +628,7 @@ python -m mcp_server_sqlseed
|
|
|
628
628
|
|
|
629
629
|
这意味着你可以在 AI 助手中说:
|
|
630
630
|
|
|
631
|
-
> "分析 `app.db` 中 `
|
|
631
|
+
> "分析 `app.db` 中 `bank_cards` 表的结构,生成 YAML 配置,然后填充 5000 行数据。"
|
|
632
632
|
|
|
633
633
|
AI 助手会依次调用 `inspect_schema` → `generate_yaml` → `execute_fill`,无需你手动编写任何代码。
|
|
634
634
|
|
|
@@ -372,7 +372,7 @@ class DataOrchestrator:
|
|
|
372
372
|
|
|
373
373
|
When a column name exists in the SharedPool (generated by a previously
|
|
374
374
|
filled table), automatically use those values as a foreign_key strategy.
|
|
375
|
-
This handles cases like
|
|
375
|
+
This handles cases like account_id appearing in multiple tables without
|
|
376
376
|
an explicit FK constraint.
|
|
377
377
|
"""
|
|
378
378
|
if not self._shared_pool._pools:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|