A MySQL query builder for Python
Project description
Aloha MySQL Query Builder
Aloha MySQL Query Builder 是一个 Python 库,用于简化 MySQL 查询的构建,支持构建常见的 SQL 查询语句,包括 SELECT、INSERT、UPDATE、DELETE 等。该库提供了一个简洁的 API,使得在 Python 中构建和执行 MySQL 查询变得更加方便。
特性
- 支持
SELECT,INSERT,UPDATE,DELETE等常见 SQL 查询类型。 - 支持
WHERE,ORDER BY,GROUP BY,LIMIT等 SQL 子句。 - 支持批量插入和批量更新。
- 支持构建完整的 SQL 查询字符串,便于执行。
- 支持检查记录是否存在(
IF EXISTS)。 - 支持仅返回一条记录的查询(
SELECT ONE)。
安装
你可以通过 pip 安装 Aloha MySQL Query Builder:
pip install aloha-mysql-query-builder
用法
1. 基本用法
1.1 SELECT 查询
from aloha_mysql.query_builder import AlohaQueryBuilder
query = AlohaQueryBuilder('users')
query = query.select('id', 'name').where('age', '>', 18)
sql = str(query)
print(sql) # 输出: SELECT id, name FROM users WHERE age > '18'
1.2 INSERT 查询
query = AlohaQueryBuilder('users')
query = query.insert(id=1, name='John', age=30)
sql = str(query)
print(sql) # 输出: INSERT INTO users (id, name, age) VALUES ('1', 'John', '30')
1.3 UPDATE 查询
query = AlohaQueryBuilder('users')
query = query.update(name='John Doe', age=31).where('id', '=', 1)
sql = str(query)
print(sql) # 输出: UPDATE users SET name = 'John Doe', age = '31' WHERE id = '1'
1.4 DELETE 查询
query = AlohaQueryBuilder('users')
query = query.delete().where('age', '<', 18)
sql = str(query)
print(sql) # 输出: DELETE FROM users WHERE age < '18'
2. 高级用法
2.1 批量插入
query = AlohaQueryBuilder('users')
query = query.insert_batch(
['id', 'name', 'age'], # 明确列名
[(1, 'Alice', 22), (2, 'Bob', 24)]
)
sql = str(query)
print(sql) # 输出: INSERT INTO users (id, name, age) VALUES ('1', 'Alice', '22'), ('2', 'Bob', '24')
2.2 批量更新
query = AlohaQueryBuilder('users')
query = query.update_batch(
{'name': 'John Doe', 'age': 31},
'id',
[1, 2, 3]
)
sql = str(query)
print(sql) # 输出: UPDATE users SET name = 'John Doe', age = '31' WHERE id IN ('1', '2', '3')
3. 添加排序、分组和限制
3.1 添加排序 (ORDER BY)
query = AlohaQueryBuilder('users')
query = query.select('id', 'name').where('age', '>', 18).order_by('age', 'DESC')
sql = str(query)
print(sql) # 输出: SELECT id, name FROM users WHERE age > '18' ORDER BY age DESC
3.2 添加分组 (GROUP BY)
query = AlohaQueryBuilder('users')
query = query.select('age', 'COUNT(*)').group_by('age')
sql = str(query)
print(sql) # 输出: SELECT age, COUNT(*) FROM users GROUP BY age
3.3 添加限制 (LIMIT)
query = AlohaQueryBuilder('users')
query = query.select('id', 'name').limit(10)
sql = str(query)
print(sql) # 输出: SELECT id, name FROM users LIMIT 10
4. 其他功能
4.1 select_one 方法
query = AlohaQueryBuilder('users')
query = query.select_one().select('id', 'name').where('id', '=', 1)
sql = str(query)
print(sql) # 输出: SELECT id, name FROM users WHERE id = '1' LIMIT 1
4.2 if_exist 方法
query = AlohaQueryBuilder('users')
query = query.if_exist('age > 18')
sql = str(query)
print(sql) # 输出: IF EXISTS (SELECT 1 FROM users WHERE age > 18)
运行测试
运行 pytest 来执行单元测试:
pytest tests/
贡献
欢迎提交 Issues 或 Pull Requests,参与改进本项目。
License
Aloha MySQL Query Builder 使用 MIT 许可证。详细信息请参阅 LICENSE 文件。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aloha_mysql_query_builder-0.1.0.tar.gz.
File metadata
- Download URL: aloha_mysql_query_builder-0.1.0.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf538da5bdaa20e79ad7a7cf71f8bc151349cb13936e3baa436f6d36573b4244
|
|
| MD5 |
003f42f518d7eac6041174782b5f037e
|
|
| BLAKE2b-256 |
53b202d33bd437fb19f6ffa626bb43d49b9cf2059b135fa8ee2c9d99df1cd91f
|
File details
Details for the file aloha_mysql_query_builder-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aloha_mysql_query_builder-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7899990ae59a66033530ec7194fe6a80608cf64e36060ed87909e38dc52ef7e3
|
|
| MD5 |
87d39c639b125836912ec6fbc5087c81
|
|
| BLAKE2b-256 |
68ffe39d9768399fd702fa1332606531f07c62a23a5217c7fff886ad5be11a34
|