Skip to main content

A lazy MySQL client for Python that simplifies database operations with intuitive methods for CRUD operations, automatic connection management, and result formatting. Features include easy-to-use SELECT, INSERT, UPDATE, DELETE operations with pandas DataFrame support, where clause builders, and table export capabilities.

Project description

Lazy_mysql

zread

简体中文

一个轻量级的Python库,为MySQL数据库操作提供简洁优雅的解决方案。

✨ 核心特性

  • 🔌 统一SQL执行接口 - 简化复杂的数据库操作流程
  • 📊 智能查询构建器 - 支持复杂条件、多表关联、排序限制
  • 💾 批量数据操作 - 自动优化策略,支持超大数量级数据处理
  • 🔄 Upsert支持 - 智能判断存在更新/不存在插入
  • 🛡️ 安全防注入 - 参数化查询,自动SQL注入防护
  • 📈 结果格式化 - 支持DataFrame、字典、列表等多种格式输出
  • 📝 表结构导出 - 一键导出Markdown格式文档
  • 高性能优化 - LOAD DATA INFILE支持,百万级数据秒级处理

🚀 快速安装

pip install --upgrade lazy-mysql

🎯 快速开始

1. 数据库连接初始化

from lazy_mysql import SQLExecutor
from lazy_mysql import MySQLConfig
from lazy_mysql import NDayInterval


# 创建数据库配置
config = MySQLConfig(
    host='localhost',
    user='your_username',
    passwd='your_password',
    default_database='your_database'
)

# 创建执行器实例
executor = SQLExecutor(config)

2. 智能查询操作

# 基础查询
users = executor.select('users', ['id', 'name', 'email'])
print(users)

# 条件查询 + 排序限制
active_users = executor.select(
    'users',
    ['id', 'name', 'email'],
    conditions={'status': 'active', 'age': ('>', 18)},
    order_by='created_at DESC',
    limit=10
)

# 复杂条件查询
results = executor.select(
    'users',
    ['id', 'name', 'score'],
    conditions={
        'status': ('IN', ['active', 'premium']),
        'score': ('BETWEEN', [80, 100]),
        'name': ('LIKE', '%John%'),
        'order_dateTime': ('>=', NDayInterval(7))  # 最近7天
    },
    fetch_config={'output_format': 'df'}  # 返回DataFrame格式
)

3. 批量数据插入

# 单条插入
executor.insert('users', {'name': '张三', 'email': 'zhang@example.com'}, commit=True)

# 批量插入(自动优化策略)
users_data = [
    {'name': '李四', 'email': 'li@example.com', 'age': 25},
    {'name': '王五', 'email': 'wang@example.com', 'age': 30},
    # ... 支持数千条记录
]
inserted_count = executor.insert('users', users_data, commit=True)

# Upsert操作(存在更新,不存在插入)
user_data = {
    'id': 1,
    'name': '张三',
    'email': 'new_email@example.com',
    'updated_at': '2024-01-15 10:00:00'
}
executor.upsert('users', user_data, commit=True)

4. 数据更新与删除

# 条件更新
executor.update(
    'users',
    {'status': 'premium', 'updated_at': '2024-01-15 10:00:00'},
    conditions={'last_login': ('>=', '2024-01-01'), 'points': ('>=', 1000)},
    commit=True
)

# 安全删除(必须指定条件)
executor.delete('users', conditions={'status': 'inactive', 'last_login': ('<', '2023-01-01')}, commit=True)

5. 使用完毕后关闭连接

# 直接关闭数据库连接
executor.close()
# 提交数据并关闭连接
executor.commit_close()

📚 详细文档

🔗 连接与配置

🔍 查询操作

💾 数据修改

🛠️ SQL工具函数

  • SQL工具函数 - add_limit条件构建、字符串拼接、运算符支持

🔧 环境要求

  • Python: 3.7+
  • MySQL: 8.0.36+
  • 依赖库:
    • mysql-connector-python>=9.4.0
    • pandas>=2.3.1

⚠️ 兼容性说明: 低于上述版本要求的兼容性尚未验证

🎯 适用场景

  • Web应用开发 - 快速原型开发、API后端服务
  • 数据分析 - DataFrame集成、报表生成、数据清洗
  • 批量数据处理 - 日志导入、数据迁移、ETL流程
  • 企业级应用 - 事务处理、并发控制、错误重试

🏆 性能优势

操作类型 传统方式 lazy_mysql优化 性能提升
批量插入1万条 3-5秒 0.5-1秒 5-10倍
批量插入10万条 30-60秒 2-5秒 15-30倍
复杂条件查询 手动拼接SQL 智能构建 开发效率3倍
大数据导出 内存占用高 流式处理 内存节省80%

📦 PyPI 项目

项目已发布到PyPI,可通过以下链接访问:

📄 开源协议

本项目采用MIT开源协议 - 详见 LICENSE 文件

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lazy_mysql-0.4.6.tar.gz (31.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lazy_mysql-0.4.6-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file lazy_mysql-0.4.6.tar.gz.

File metadata

  • Download URL: lazy_mysql-0.4.6.tar.gz
  • Upload date:
  • Size: 31.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for lazy_mysql-0.4.6.tar.gz
Algorithm Hash digest
SHA256 96c7f68a2404838667adfe26dfe991ca859bc430fda9011b330b13fb0b7f32c9
MD5 7a87abee0fc1d9160ceaa74f7b04e082
BLAKE2b-256 d53f2a36579d373d7db46b2ed7f015e7b5d32e13fab7761f8e0b589ea377932a

See more details on using hashes here.

File details

Details for the file lazy_mysql-0.4.6-py3-none-any.whl.

File metadata

  • Download URL: lazy_mysql-0.4.6-py3-none-any.whl
  • Upload date:
  • Size: 34.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for lazy_mysql-0.4.6-py3-none-any.whl
Algorithm Hash digest
SHA256 51ae0de97155b7c2376d58ac717cff35fe3733982dc0786198af308db188b8f2
MD5 91970148d261103836e67f1164b327d5
BLAKE2b-256 2036711d1a44f4e2df15a4c4978c1673aa72d8b5241c9bd3e5686ea623bed6cd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page