Skip to main content

Lazy_mysql

zread

简体中文

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

✨ 核心特性

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

🚀 快速安装

pip install --upgrade lazy-mysql

🎯 快速开始

1. 数据库连接初始化

from lazy_mysql import SQLExecutor, MySQLConfig, NDayInterval

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

# 指定数据库
executor = SQLExecutor(config, database='database')

# 不传入配置时自动从环境变量读取:
# LAZY_MYSQL_HOST / LAZY_MYSQL_PORT / LAZY_MYSQL_USER / LAZY_MYSQL_PASSWD / LAZY_MYSQL_DATABASE

# 支持混合配置:host/user/passwd 从环境变量读取,database 由参数指定
executor = SQLExecutor(database='another_db')

2. 智能查询操作

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

# 手写复杂 SQL(query 直接执行)
result = executor.query(
    "SELECT id, name, RANK() OVER (ORDER BY score DESC) as rank FROM users",
    fetch_config={'output_format': 'df_dict', 'data_label': ['id', 'name', 'rank']}
)

# 条件查询 + 排序限制
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格式
)

⚠️ 编写 SQL 的红线:MySQL 驱动按纯文本扫描占位符,不区分代码与注释。SQL(含 .sql 文件)的注释中禁止出现 % 和 {} —— 注释里的 %s / %(name)s 会被当成真实占位符参与计数,一旦传 params 就会抛 ProgrammingError: Not enough parameters for the SQL statement。详见 编写 .sql 文件的红线。

3. 使用完毕后关闭连接

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

📚 详细文档

🔗 连接与配置

🔍 查询操作

💾 数据修改

🛠️ SQL工具函数

  • SQL工具函数 - add_limit条件构建、build_where/build_sql_with_where WHERE子句构建、resolve_sql智能路径解析、load_sql文件加载
  • ⚠️ 编写 .sql 文件的红线 - SQL 注释中禁止出现 % 和 {},否则传 params 时必报 Not enough parameters for the SQL statement

🗂️ 表结构工具

  • Table 表结构工具 - 表/视图结构一键导出为 Markdown、TEXT 列 JSON 修复、表名校验防注入

📦 PyPI 项目

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

🔧 环境要求

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

📄 开源协议

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

Metadata

Release files for lazy-mysql 0.7.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lazy-mysql 0.7.4
File Size Uploaded
lazy_mysql-0.7.4.tar.gz 54.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lazy-mysql 0.7.4
File Interpreter ABI Platform
lazy_mysql-0.7.4-py3-none-any.whl Python 3 none any Details

Total release size: 110.1 kB

Release files / lazy_mysql-0.7.4.tar.gz

Download URL lazy_mysql-0.7.4.tar.gz
Size 54.3 kB
Tags Source
SHA-256 checksum
How to use checksums
622982ed780d2a8efc53ec872ce7453fa0f25ed407c0152463dea3c02c63ebc3
BLAKE2b-256 checksum
How to use checksums
401c4a87bc54e14d1f1d460fc053caee57e6af874cdb6d07c3b5e580eab1ccdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / lazy_mysql-0.7.4-py3-none-any.whl

Download URL lazy_mysql-0.7.4-py3-none-any.whl
Size 55.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
205d0f8c74bdaa8de85b28469e97f88b078633f9f3f00816af5c92da16452bf8
BLAKE2b-256 checksum
How to use checksums
078689498108c10052a2475f0a0efaaf4944510a2df8a2612413815d83812666
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

0.7.4 This release

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page