sql-assistant 1.0.0__tar.gz → 1.0.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.
Files changed (92) hide show
  1. sql_assistant-1.0.1/.gitignore +123 -0
  2. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/PKG-INFO +14 -2
  3. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/README.md +20 -0
  4. sql_assistant-1.0.1/pyproject.toml +55 -0
  5. sql_assistant-1.0.1/pytest.ini +4 -0
  6. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/dependencies.py +5 -0
  7. sql_assistant-1.0.1/src/sql_assistant/api/explain.py +481 -0
  8. sql_assistant-1.0.1/src/sql_assistant/api/export.py +165 -0
  9. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/models.py +118 -1
  10. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/routes.py +7 -1
  11. sql_assistant-1.0.1/src/sql_assistant/api/templates.py +83 -0
  12. sql_assistant-1.0.1/src/sql_assistant/database/explain.py +219 -0
  13. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/history.py +14 -9
  14. sql_assistant-1.0.1/src/sql_assistant/database/templates.py +190 -0
  15. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/base.css +5 -1
  16. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/components/chat.css +104 -0
  17. sql_assistant-1.0.1/src/sql_assistant/web/static/css/components/explain.css +616 -0
  18. sql_assistant-1.0.1/src/sql_assistant/web/static/css/components/navbar.css +183 -0
  19. sql_assistant-1.0.1/src/sql_assistant/web/static/css/components/templates.css +198 -0
  20. sql_assistant-1.0.1/src/sql_assistant/web/static/css/components/toast.css +32 -0
  21. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/style.css +4 -1
  22. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/app.js +12 -0
  23. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/chat.js +28 -3
  24. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/conversations.js +1 -1
  25. sql_assistant-1.0.1/src/sql_assistant/web/static/js/explain.js +531 -0
  26. sql_assistant-1.0.1/src/sql_assistant/web/static/js/export.js +223 -0
  27. sql_assistant-1.0.1/src/sql_assistant/web/static/js/navbar.js +93 -0
  28. sql_assistant-1.0.1/src/sql_assistant/web/static/js/templates.js +221 -0
  29. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/theme-manager.js +2 -0
  30. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/ui.js +10 -1
  31. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/templates/index.html +131 -32
  32. sql_assistant-1.0.1/tests/__init__.py +0 -0
  33. sql_assistant-1.0.1/tests/test_api_routes.py +76 -0
  34. sql_assistant-1.0.1/tests/test_backup.py +84 -0
  35. sql_assistant-1.0.1/tests/test_config.py +144 -0
  36. sql_assistant-1.0.1/tests/test_database_connectors.py +131 -0
  37. sql_assistant-1.0.1/tests/test_database_manager.py +27 -0
  38. sql_assistant-1.0.1/tests/test_explain.py +88 -0
  39. sql_assistant-1.0.1/tests/test_export.py +83 -0
  40. sql_assistant-1.0.1/tests/test_history.py +80 -0
  41. sql_assistant-1.0.1/tests/test_llm_manager.py +43 -0
  42. sql_assistant-1.0.1/tests/test_templates.py +110 -0
  43. sql_assistant-1.0.0/.gitignore +0 -116
  44. sql_assistant-1.0.0/pyproject.toml +0 -34
  45. sql_assistant-1.0.0/src/sql_assistant/web/static/css/components/toast.css +0 -30
  46. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/LICENSE +0 -0
  47. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/__init__.py +0 -0
  48. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/__init__.py +0 -0
  49. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/backup.py +0 -0
  50. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/config.py +0 -0
  51. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/conversation.py +0 -0
  52. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/history.py +0 -0
  53. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/query.py +0 -0
  54. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/api/schema.py +0 -0
  55. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/config.py +0 -0
  56. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/__init__.py +0 -0
  57. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/backup.py +0 -0
  58. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/__init__.py +0 -0
  59. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/base.py +0 -0
  60. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/exceptions.py +0 -0
  61. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/mongodb.py +0 -0
  62. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/mysql.py +0 -0
  63. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/postgresql.py +0 -0
  64. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/redis.py +0 -0
  65. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/connectors/sqlserver.py +0 -0
  66. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/manager.py +0 -0
  67. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/database/security.py +0 -0
  68. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/__init__.py +0 -0
  69. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/base.py +0 -0
  70. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/exceptions.py +0 -0
  71. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/manager.py +0 -0
  72. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/prompts.py +0 -0
  73. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/providers/__init__.py +0 -0
  74. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/providers/claude.py +0 -0
  75. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/providers/gemini.py +0 -0
  76. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/providers/openai_compatible.py +0 -0
  77. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/llm/retry.py +0 -0
  78. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/main.py +0 -0
  79. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/settings.py +0 -0
  80. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/__init__.py +0 -0
  81. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/components/backup.css +0 -0
  82. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/components/modal.css +0 -0
  83. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/components/settings.css +0 -0
  84. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/components/sidebar.css +0 -0
  85. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/css/theme.css +0 -0
  86. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/api.js +0 -0
  87. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/backup.js +0 -0
  88. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/color-theme-manager.js +0 -0
  89. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/confirm.js +0 -0
  90. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/settings.js +0 -0
  91. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/src/sql_assistant/web/static/js/state.js +0 -0
  92. {sql_assistant-1.0.0 → sql_assistant-1.0.1}/start.py +0 -0
@@ -0,0 +1,123 @@
1
+ # ==============================================================================
2
+ # SQL Assistant - .gitignore
3
+ # ==============================================================================
4
+
5
+ # ----------------------------
6
+ # Virtual Environment
7
+ # ----------------------------
8
+ .venv/
9
+ .env/
10
+ env/
11
+ venv/
12
+ ENV/
13
+ .env.local
14
+ .env.*.local
15
+
16
+ # ----------------------------
17
+ # Python
18
+ # ----------------------------
19
+ __pycache__/
20
+ *.pyc
21
+ *.pyo
22
+ *.pyd
23
+ .Python
24
+ *.egg-info/
25
+ uv.lock
26
+ pip-selfcheck.json
27
+ .hypothesis/
28
+ .pytest_cache/
29
+ .coverage
30
+ coverage.xml
31
+ htmlcov/
32
+ .tox/
33
+
34
+ # ----------------------------
35
+ # Build Artifacts
36
+ # ----------------------------
37
+ dist/
38
+ build/
39
+ *.whl
40
+ *.egg
41
+ .installed.cfg
42
+
43
+ # ----------------------------
44
+ # IDE & Editor
45
+ # ----------------------------
46
+ .vscode/
47
+ .idea/
48
+ .project
49
+ .pydevproject
50
+ .settings/
51
+ *.swp
52
+ *.swo
53
+ *~
54
+ .DS_Store
55
+ Thumbs.db
56
+ desktop.ini
57
+
58
+ # ----------------------------
59
+ # Logs
60
+ # ----------------------------
61
+ *.log
62
+ logs/
63
+ *.log.*
64
+ .logs/
65
+
66
+ # ----------------------------
67
+ # Configuration & Data
68
+ # ----------------------------
69
+ # 项目数据目录(配置、数据库、运行时数据)
70
+ .data/
71
+ # 旧版配置路径
72
+ ~/.sql-assistant/
73
+ .sql-assistant/
74
+ # SQLite数据库文件
75
+ *.db
76
+ *.sqlite
77
+ *.sqlite3
78
+ *.db-journal
79
+
80
+ # ----------------------------
81
+ # Backup
82
+ # ----------------------------
83
+ # 数据库备份目录
84
+ backups/
85
+
86
+ # ----------------------------
87
+ # Security
88
+ # ----------------------------
89
+ *.pem
90
+ *.key
91
+ *.cert
92
+ *.crt
93
+ secrets/
94
+ .vault/
95
+
96
+ # ----------------------------
97
+ # Node.js (if used)
98
+ # ----------------------------
99
+ node_modules/
100
+ package-lock.json
101
+ yarn.lock
102
+ pnpm-lock.yaml
103
+
104
+ # ----------------------------
105
+ # Trae IDE
106
+ # ----------------------------
107
+ .codegraph/
108
+
109
+ # ----------------------------
110
+ # DeepSeek
111
+ # ----------------------------
112
+ .deepseek/
113
+
114
+ # ----------------------------
115
+ # Trae IDE Rules
116
+ # ----------------------------
117
+ .trae/
118
+
119
+ # ----------------------------
120
+ # Cache
121
+ # ----------------------------
122
+ .cache/
123
+ *.egg
@@ -1,8 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sql-assistant
3
- Version: 1.0.0
4
- Summary: SQL 智能助手 - 自然语言转 SQL 查询工具,支持主流数据库和 LLM
3
+ Version: 1.0.1
4
+ Summary: SQL Smart Assistant - Natural Language to SQL query tool supporting major databases and LLMs
5
+ Author-email: fjz-hosts <2931742378@qq.com>
6
+ Maintainer-email: fjz-hosts <2931742378@qq.com>
5
7
  License-File: LICENSE
8
+ Keywords: assistant,database,llm,natural-language,query,sql
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Topic :: Database
17
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
6
18
  Requires-Python: >=3.10
7
19
  Requires-Dist: aiosqlite>=0.20.0
8
20
  Requires-Dist: fastapi>=0.110.0
@@ -23,6 +23,9 @@
23
23
 
24
24
  ## 🗞️ News
25
25
 
26
+ - **2026-05-14** — 🎉 SQL Smart Assistant v1.0.1 released!
27
+ - Added SQL Template/Favorite functionality
28
+ - Added Execution Plan Analysis feature
26
29
  - **2026-05-10** — 🎉 SQL Smart Assistant v1.0.0 released!
27
30
 
28
31
 
@@ -143,6 +146,20 @@ Visit **http://localhost:5010** to start using!
143
146
  - **Backup Management**: View backup list, get backup details, delete backup files
144
147
  - **Data Recovery**: Restore table structure and data from backup files to current database
145
148
 
149
+ ### 8. SQL Template/Favorite
150
+
151
+ - **Template Management**: Create, edit, delete SQL templates for frequently used queries
152
+ - **Tag-based Filtering**: Organize templates with tags for easy categorization
153
+ - **Quick Insert**: Insert templates directly into the query input box
154
+ - **Favorite Marking**: Mark frequently used SQL statements as favorites
155
+
156
+ ### 9. Execution Plan Analysis
157
+
158
+ - **Visual Execution Plan**: View graphical execution plan for SELECT statements
159
+ - **Cost Analysis**: Analyze query cost and performance metrics
160
+ - **Optimization Suggestions**: Get AI-powered optimization recommendations
161
+ - **Index Utilization**: Check index usage and identify missing indexes
162
+
146
163
 
147
164
  ## <a id="system-architecture"></a> 🏗️ System Architecture
148
165
 
@@ -418,6 +435,9 @@ Visit **http://localhost:5010/docs** after starting the service to view Swagger
418
435
  | `/api/backup/list` | GET | Get backup list |
419
436
  | `/api/backup/{backup_id}` | GET/DELETE | Get backup details / Delete backup |
420
437
  | `/api/backup/restore` | POST | Restore database from backup |
438
+ | `/api/templates` | GET/POST | Get template list / Create new template |
439
+ | `/api/templates/{id}` | GET/PUT/DELETE | Get/update/delete template |
440
+ | `/api/explain` | POST | Analyze SQL execution plan |
421
441
 
422
442
 
423
443
  ## ⚠️ Notes
@@ -0,0 +1,55 @@
1
+ [project]
2
+ name = "sql-assistant"
3
+ version = "1.0.1"
4
+ description = "SQL Smart Assistant - Natural Language to SQL query tool supporting major databases and LLMs"
5
+ requires-python = ">=3.10"
6
+ authors = [
7
+ { name = "fjz-hosts", email = "2931742378@qq.com" }
8
+ ]
9
+ maintainers = [
10
+ { name = "fjz-hosts", email = "2931742378@qq.com" }
11
+ ]
12
+ keywords = ["sql", "llm", "natural-language", "database", "query", "assistant"]
13
+ classifiers = [
14
+ "Development Status :: 4 - Beta",
15
+ "Intended Audience :: Developers",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Topic :: Database",
22
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
23
+ ]
24
+ dependencies = [
25
+ "fastapi>=0.110.0",
26
+ "uvicorn[standard]>=0.29.0",
27
+ "jinja2>=3.1.0",
28
+ "pydantic>=2.0.0",
29
+ "python-multipart>=0.0.9",
30
+ "pyyaml>=6.0",
31
+ "httpx>=0.27.0",
32
+ "pymysql>=1.1.0",
33
+ "psycopg2-binary>=2.9.0",
34
+ "redis>=5.0.0",
35
+ "pymongo>=4.6.0",
36
+ "aiosqlite>=0.20.0",
37
+ ]
38
+
39
+ [project.optional-dependencies]
40
+ sqlserver = ["pymssql>=2.3.0"]
41
+ gemini = ["google-generativeai>=0.8.0"]
42
+ claude = ["anthropic>=0.30.0"]
43
+
44
+ [build-system]
45
+ requires = ["hatchling"]
46
+ build-backend = "hatchling.build"
47
+
48
+ [tool.hatch.metadata]
49
+ readme = "README.md"
50
+
51
+ [tool.hatch.build.targets.wheel]
52
+ packages = ["src/sql_assistant"]
53
+
54
+ [project.scripts]
55
+ sql-assistant = "sql_assistant.main:main"
@@ -0,0 +1,4 @@
1
+ [pytest]
2
+ testpaths = ["tests"]
3
+ pythonpath = ["src"]
4
+ addopts = -v --tb=short
@@ -4,6 +4,7 @@ from ..config import get_config_manager
4
4
  from ..llm.manager import get_llm_manager
5
5
  from ..database.manager import get_db_manager
6
6
  from ..database.history import get_history_manager
7
+ from ..database.templates import get_template_manager as get_db_template_manager
7
8
 
8
9
 
9
10
  def get_config():
@@ -20,3 +21,7 @@ def get_db():
20
21
 
21
22
  def get_history():
22
23
  return get_history_manager()
24
+
25
+
26
+ def get_template_manager():
27
+ return get_db_template_manager()