Skip to main content

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


Download files

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

Source Distribution

aloha_mysql_query_builder-0.1.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

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

aloha_mysql_query_builder-0.1.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file aloha_mysql_query_builder-0.1.0.tar.gz.

File metadata

File hashes

Hashes for aloha_mysql_query_builder-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cf538da5bdaa20e79ad7a7cf71f8bc151349cb13936e3baa436f6d36573b4244
MD5 003f42f518d7eac6041174782b5f037e
BLAKE2b-256 53b202d33bd437fb19f6ffa626bb43d49b9cf2059b135fa8ee2c9d99df1cd91f

See more details on using hashes here.

File details

Details for the file aloha_mysql_query_builder-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for aloha_mysql_query_builder-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7899990ae59a66033530ec7194fe6a80608cf64e36060ed87909e38dc52ef7e3
MD5 87d39c639b125836912ec6fbc5087c81
BLAKE2b-256 68ffe39d9768399fd702fa1332606531f07c62a23a5217c7fff886ad5be11a34

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