db-connector-tool


Namedb-connector-tool JSON
Version 0.0.3 PyPI version JSON
download
home_pageNone
Summary跨平台数据库连接管理工具
upload_time2025-10-14 08:38:37
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords database connection manager orm sqlalchemy cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DB Connector - 跨平台数据库连接管理模块

一个安全、跨平台的Python数据库连接管理模块,支持主流数据库并提供加密存储功能。

## 特性

- 🔐 **安全加密**: 使用 `cryptography.fernet` 加密敏感连接信息
- 📁 **配置管理**: 基于 TOML 的配置文件(读取:`tomllib`,写入:`tomli-w`)
- 🗄️ **多数据库支持**: 
  - Oracle (oracledb)
  - PostgreSQL (psycopg2/psycopg3)
  - SQL Server (pymssql)
  - MySQL (pymysql)
  - SQLite (sqlite3)
- 🏗️ **ORM 集成**: 基于 SQLAlchemy 2.0+
- 📊 **完整日志**: 使用 logging 模块记录操作日志
- 🌐 **跨平台**: 支持 Windows、Linux、macOS
- 🧪 **完整测试**: 包含单元测试和集成测试

## 安装

### 要求

- Python >= 3.8
- 参见 `requirements.txt` 了解依赖详情

### 从源码安装

```bash
git clone https://github.com/yourusername/db-connector.git
cd db-connector
pip install -e .
```

### 从 PyPI 安装(未来计划)

```bash
pip install db-connector
```

## 快速开始

### 基础用法

```python
from db_connector import DatabaseManager

# 创建数据库管理器
db_manager = DatabaseManager()

# 添加数据库连接
mysql_config = {
    'type': 'mysql',
    'host': 'localhost',
    'port': '3306',
    'username': 'your_username',
    'password': 'your_password',
    'database': 'your_database'
}

db_manager.create_connection('my_mysql', mysql_config)

# 执行查询
results = db_manager.execute_query('my_mysql', 'SELECT * FROM users LIMIT 10')
print(results)

# 关闭连接
db_manager.close_all_connections()
```

### 多数据库操作

```python
from db_connector import DatabaseManager

db_manager = DatabaseManager()

# 配置多个数据库
databases = {
    'app_db': {
        'type': 'postgresql',
        'host': 'db.server.com',
        'username': 'user',
        'password': 'pass',
        'database': 'application'
    },
    'log_db': {
        'type': 'sqlite',
        'database': '/path/to/logs.db'
    }
}

for name, config in databases.items():
    db_manager.create_connection(name, config)

# 跨数据库操作
users = db_manager.execute_query('app_db', 'SELECT * FROM users')
db_manager.execute_command('log_db', 'INSERT INTO access_log VALUES (?, ?)', (user_id, 'login'))

db_manager.close_all_connections()
```

## 配置说明

### 连接配置格式

每个数据库连接支持以下配置:

**MySQL/PostgreSQL/SQL Server/Oracle:**
```python
{
    'type': 'mysql',  # mysql, postgresql, mssql, oracle
    'host': 'localhost',
    'port': '3306',
    'username': 'your_username',
    'password': 'your_password',
    'database': 'your_database'
}
```

**SQLite:**
```python
{
    'type': 'sqlite',
    'database': '/path/to/database.db'  # 或 ':memory:' 用于内存数据库
}
```

### 配置文件位置

- **配置文件**: `~/.config/db_connector/connections.toml`
- **日志文件**: `~/.config/db_connector/logs/db_connector.log`
- **加密密钥**: `~/.config/db_connector/encryption.key`

## API 参考

### DatabaseManager

主要管理类,提供以下方法:

- `create_connection(name, config)`: 创建连接配置
- `get_connection(name)`: 获取数据库连接
- `execute_query(connection_name, query, params)`: 执行查询
- `execute_command(connection_name, command, params)`: 执行命令
- `test_connection(name)`: 测试连接
- `list_connections()`: 列出所有连接
- `remove_connection(name)`: 删除连接
- `close_connection(name)`: 关闭连接
- `close_all_connections()`: 关闭所有连接

## 开发

### 运行测试

```bash
# 运行所有测试
pytest

# 运行特定测试模块
pytest tests/test_database.py

# 带覆盖率的测试
pytest --cov=db_connector tests/
```

### 代码风格

本项目使用 Black 代码格式化工具:

```bash
black db_connector/ tests/ examples/
```

## 许可证

MIT License - 详见 LICENSE 文件

## 贡献

欢迎提交 Issue 和 Pull Request!

## 支持

如有问题请:
1. 查看文档和示例
2. 提交 GitHub Issue
3. 联系维护者

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "db-connector-tool",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "database, connection, manager, orm, sqlalchemy, cli",
    "author": null,
    "author_email": "wangquanqing <wangquanqing1636@sina.com>",
    "download_url": "https://files.pythonhosted.org/packages/b5/07/09d8df0bd91a540c4dfa398ac00b4bfecbba47b54c60635204cd26b85d6e/db_connector_tool-0.0.3.tar.gz",
    "platform": null,
    "description": "# DB Connector - \u8de8\u5e73\u53f0\u6570\u636e\u5e93\u8fde\u63a5\u7ba1\u7406\u6a21\u5757\r\n\r\n\u4e00\u4e2a\u5b89\u5168\u3001\u8de8\u5e73\u53f0\u7684Python\u6570\u636e\u5e93\u8fde\u63a5\u7ba1\u7406\u6a21\u5757\uff0c\u652f\u6301\u4e3b\u6d41\u6570\u636e\u5e93\u5e76\u63d0\u4f9b\u52a0\u5bc6\u5b58\u50a8\u529f\u80fd\u3002\r\n\r\n## \u7279\u6027\r\n\r\n- \ud83d\udd10 **\u5b89\u5168\u52a0\u5bc6**: \u4f7f\u7528 `cryptography.fernet` \u52a0\u5bc6\u654f\u611f\u8fde\u63a5\u4fe1\u606f\r\n- \ud83d\udcc1 **\u914d\u7f6e\u7ba1\u7406**: \u57fa\u4e8e TOML \u7684\u914d\u7f6e\u6587\u4ef6\uff08\u8bfb\u53d6\uff1a`tomllib`\uff0c\u5199\u5165\uff1a`tomli-w`\uff09\r\n- \ud83d\uddc4\ufe0f **\u591a\u6570\u636e\u5e93\u652f\u6301**: \r\n  - Oracle (oracledb)\r\n  - PostgreSQL (psycopg2/psycopg3)\r\n  - SQL Server (pymssql)\r\n  - MySQL (pymysql)\r\n  - SQLite (sqlite3)\r\n- \ud83c\udfd7\ufe0f **ORM \u96c6\u6210**: \u57fa\u4e8e SQLAlchemy 2.0+\r\n- \ud83d\udcca **\u5b8c\u6574\u65e5\u5fd7**: \u4f7f\u7528 logging \u6a21\u5757\u8bb0\u5f55\u64cd\u4f5c\u65e5\u5fd7\r\n- \ud83c\udf10 **\u8de8\u5e73\u53f0**: \u652f\u6301 Windows\u3001Linux\u3001macOS\r\n- \ud83e\uddea **\u5b8c\u6574\u6d4b\u8bd5**: \u5305\u542b\u5355\u5143\u6d4b\u8bd5\u548c\u96c6\u6210\u6d4b\u8bd5\r\n\r\n## \u5b89\u88c5\r\n\r\n### \u8981\u6c42\r\n\r\n- Python >= 3.8\r\n- \u53c2\u89c1 `requirements.txt` \u4e86\u89e3\u4f9d\u8d56\u8be6\u60c5\r\n\r\n### \u4ece\u6e90\u7801\u5b89\u88c5\r\n\r\n```bash\r\ngit clone https://github.com/yourusername/db-connector.git\r\ncd db-connector\r\npip install -e .\r\n```\r\n\r\n### \u4ece PyPI \u5b89\u88c5\uff08\u672a\u6765\u8ba1\u5212\uff09\r\n\r\n```bash\r\npip install db-connector\r\n```\r\n\r\n## \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u57fa\u7840\u7528\u6cd5\r\n\r\n```python\r\nfrom db_connector import DatabaseManager\r\n\r\n# \u521b\u5efa\u6570\u636e\u5e93\u7ba1\u7406\u5668\r\ndb_manager = DatabaseManager()\r\n\r\n# \u6dfb\u52a0\u6570\u636e\u5e93\u8fde\u63a5\r\nmysql_config = {\r\n    'type': 'mysql',\r\n    'host': 'localhost',\r\n    'port': '3306',\r\n    'username': 'your_username',\r\n    'password': 'your_password',\r\n    'database': 'your_database'\r\n}\r\n\r\ndb_manager.create_connection('my_mysql', mysql_config)\r\n\r\n# \u6267\u884c\u67e5\u8be2\r\nresults = db_manager.execute_query('my_mysql', 'SELECT * FROM users LIMIT 10')\r\nprint(results)\r\n\r\n# \u5173\u95ed\u8fde\u63a5\r\ndb_manager.close_all_connections()\r\n```\r\n\r\n### \u591a\u6570\u636e\u5e93\u64cd\u4f5c\r\n\r\n```python\r\nfrom db_connector import DatabaseManager\r\n\r\ndb_manager = DatabaseManager()\r\n\r\n# \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u5e93\r\ndatabases = {\r\n    'app_db': {\r\n        'type': 'postgresql',\r\n        'host': 'db.server.com',\r\n        'username': 'user',\r\n        'password': 'pass',\r\n        'database': 'application'\r\n    },\r\n    'log_db': {\r\n        'type': 'sqlite',\r\n        'database': '/path/to/logs.db'\r\n    }\r\n}\r\n\r\nfor name, config in databases.items():\r\n    db_manager.create_connection(name, config)\r\n\r\n# \u8de8\u6570\u636e\u5e93\u64cd\u4f5c\r\nusers = db_manager.execute_query('app_db', 'SELECT * FROM users')\r\ndb_manager.execute_command('log_db', 'INSERT INTO access_log VALUES (?, ?)', (user_id, 'login'))\r\n\r\ndb_manager.close_all_connections()\r\n```\r\n\r\n## \u914d\u7f6e\u8bf4\u660e\r\n\r\n### \u8fde\u63a5\u914d\u7f6e\u683c\u5f0f\r\n\r\n\u6bcf\u4e2a\u6570\u636e\u5e93\u8fde\u63a5\u652f\u6301\u4ee5\u4e0b\u914d\u7f6e\uff1a\r\n\r\n**MySQL/PostgreSQL/SQL Server/Oracle:**\r\n```python\r\n{\r\n    'type': 'mysql',  # mysql, postgresql, mssql, oracle\r\n    'host': 'localhost',\r\n    'port': '3306',\r\n    'username': 'your_username',\r\n    'password': 'your_password',\r\n    'database': 'your_database'\r\n}\r\n```\r\n\r\n**SQLite:**\r\n```python\r\n{\r\n    'type': 'sqlite',\r\n    'database': '/path/to/database.db'  # \u6216 ':memory:' \u7528\u4e8e\u5185\u5b58\u6570\u636e\u5e93\r\n}\r\n```\r\n\r\n### \u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e\r\n\r\n- **\u914d\u7f6e\u6587\u4ef6**: `~/.config/db_connector/connections.toml`\r\n- **\u65e5\u5fd7\u6587\u4ef6**: `~/.config/db_connector/logs/db_connector.log`\r\n- **\u52a0\u5bc6\u5bc6\u94a5**: `~/.config/db_connector/encryption.key`\r\n\r\n## API \u53c2\u8003\r\n\r\n### DatabaseManager\r\n\r\n\u4e3b\u8981\u7ba1\u7406\u7c7b\uff0c\u63d0\u4f9b\u4ee5\u4e0b\u65b9\u6cd5\uff1a\r\n\r\n- `create_connection(name, config)`: \u521b\u5efa\u8fde\u63a5\u914d\u7f6e\r\n- `get_connection(name)`: \u83b7\u53d6\u6570\u636e\u5e93\u8fde\u63a5\r\n- `execute_query(connection_name, query, params)`: \u6267\u884c\u67e5\u8be2\r\n- `execute_command(connection_name, command, params)`: \u6267\u884c\u547d\u4ee4\r\n- `test_connection(name)`: \u6d4b\u8bd5\u8fde\u63a5\r\n- `list_connections()`: \u5217\u51fa\u6240\u6709\u8fde\u63a5\r\n- `remove_connection(name)`: \u5220\u9664\u8fde\u63a5\r\n- `close_connection(name)`: \u5173\u95ed\u8fde\u63a5\r\n- `close_all_connections()`: \u5173\u95ed\u6240\u6709\u8fde\u63a5\r\n\r\n## \u5f00\u53d1\r\n\r\n### \u8fd0\u884c\u6d4b\u8bd5\r\n\r\n```bash\r\n# \u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\r\npytest\r\n\r\n# \u8fd0\u884c\u7279\u5b9a\u6d4b\u8bd5\u6a21\u5757\r\npytest tests/test_database.py\r\n\r\n# \u5e26\u8986\u76d6\u7387\u7684\u6d4b\u8bd5\r\npytest --cov=db_connector tests/\r\n```\r\n\r\n### \u4ee3\u7801\u98ce\u683c\r\n\r\n\u672c\u9879\u76ee\u4f7f\u7528 Black \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\uff1a\r\n\r\n```bash\r\nblack db_connector/ tests/ examples/\r\n```\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\nMIT License - \u8be6\u89c1 LICENSE \u6587\u4ef6\r\n\r\n## \u8d21\u732e\r\n\r\n\u6b22\u8fce\u63d0\u4ea4 Issue \u548c Pull Request\uff01\r\n\r\n## \u652f\u6301\r\n\r\n\u5982\u6709\u95ee\u9898\u8bf7\uff1a\r\n1. \u67e5\u770b\u6587\u6863\u548c\u793a\u4f8b\r\n2. \u63d0\u4ea4 GitHub Issue\r\n3. \u8054\u7cfb\u7ef4\u62a4\u8005\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u8de8\u5e73\u53f0\u6570\u636e\u5e93\u8fde\u63a5\u7ba1\u7406\u5de5\u5177",
    "version": "0.0.3",
    "project_urls": {
        "Documentation": "https://db-connector-tool.readthedocs.io",
        "Homepage": "https://github.com/wangquanqing/db-connector-project",
        "Issue Tracker": "https://github.com/wangquanqing/db-connector-project/issues",
        "Repository": "https://github.com/wangquanqing/db-connector-project"
    },
    "split_keywords": [
        "database",
        " connection",
        " manager",
        " orm",
        " sqlalchemy",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1f77222aa58762fe350f3c3d9757a154aa6f95e5f7c1b1e6d015c6edf37a067a",
                "md5": "5faf977b69de7fbcd205e491b1b35332",
                "sha256": "81783d2c1587d0a92c5ce7a697f467409f4b905d6ffd3b772cbc5590b8ea53bc"
            },
            "downloads": -1,
            "filename": "db_connector_tool-0.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5faf977b69de7fbcd205e491b1b35332",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 55472,
            "upload_time": "2025-10-14T08:38:35",
            "upload_time_iso_8601": "2025-10-14T08:38:35.473175Z",
            "url": "https://files.pythonhosted.org/packages/1f/77/222aa58762fe350f3c3d9757a154aa6f95e5f7c1b1e6d015c6edf37a067a/db_connector_tool-0.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b50709d8df0bd91a540c4dfa398ac00b4bfecbba47b54c60635204cd26b85d6e",
                "md5": "7d62e2ad41fb64da8480514d58946035",
                "sha256": "6c3265113cca883bcb9b741a57c14e22d55e9c9d6c72d054fb67d7540d488027"
            },
            "downloads": -1,
            "filename": "db_connector_tool-0.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "7d62e2ad41fb64da8480514d58946035",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 55000,
            "upload_time": "2025-10-14T08:38:37",
            "upload_time_iso_8601": "2025-10-14T08:38:37.733331Z",
            "url": "https://files.pythonhosted.org/packages/b5/07/09d8df0bd91a540c4dfa398ac00b4bfecbba47b54c60635204cd26b85d6e/db_connector_tool-0.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-14 08:38:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "wangquanqing",
    "github_project": "db-connector-project",
    "github_not_found": true,
    "lcname": "db-connector-tool"
}
        
Elapsed time: 2.06250s