Skip to main content

Use YAML files to strip SQL statements from the program, and implement dynamic SQL through Jinja2.

Project description

Use YAML files to strip SQL statements from the program, and implement dynamic SQL through Jinja2.

Specify sql folder

from sql_splitter import SqlLoader


# Configure the path of the sql folder
SqlLoader.SQL_FILE_PATH = "/Users/kela/Program/open-sources/sql-splitter/sql_splitter/example/sql"
loader = SqlLoader()

Load all sql statements

# All sql statements are loaded while the application is running
loader.preload_all_sqls()
print(f'All sqls: {loader.sqls}')

Gets the specified sql statement

# Obtain sql based on sql_id
sql = loader.get(
    "user.index.query_user_info", options={}
)
print(f"current sql: {sql}")

Write sql statements sql/user/index.yml

SELECT
    user.id,
    user.account_id,
    user.account_name,
    user.user_name,
    user.password,
    user.phone,
    user.is_delete,
    user.enable_flag,
    user.register_datetime,
    group.name AS group_name
FROM user
JOIN group ON user.group_id = group.id
WHERE user.id = :user_id

Generate dynamic sql with the option parameter

SELECT
    user.id,
    user.account_id,
    user.account_name,
    user.user_name,
    user.password,
    user.phone,
    user.is_delete,
    user.enable_flag,
    user.register_datetime,
    group.name AS group_name
FROM user
JOIN group ON user.group_id = group.id
{% if user_id > 0 %}
WHERE user.id = :user_id
{% endif %}
# Obtain sql based on sql_id with option
# Dynamic sql requires passing in parameters to be filtered
sql = loader.get(
    "user.index.query_user_info",
    options={
        'user_id': 1
    }
)
print(f"current sql: {sql}")
# 生成的sql语句
"""
SELECT
    user.id,
    user.account_id,
    user.account_name,
    user.user_name,
    user.password,
    user.phone,
    user.is_delete,
    user.enable_flag,
    user.register_datetime,
    group.name AS group_name
FROM user
JOIN group ON user.group_id = group.id
WHERE user.id = :user_id
"""

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

sql-spliter-0.0.2.tar.gz (3.7 kB view details)

Uploaded Source

File details

Details for the file sql-spliter-0.0.2.tar.gz.

File metadata

  • Download URL: sql-spliter-0.0.2.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.16

File hashes

Hashes for sql-spliter-0.0.2.tar.gz
Algorithm Hash digest
SHA256 5a951ebe708cca33fbf8e541ce21ce472be53645e966f04fc7fea3d4b8d8d680
MD5 2d8afe25821a1d17f023bb7e074683c5
BLAKE2b-256 1bcb8de9237fccdf2436d1521a361630ce8a13ecfdf31cfef0d2f6c78953bacd

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