Skip to main content

SqlQueryBuilder

Wraps string building of MS SQL queries. It provides first level validation.

Current features

  1. Provides a string building facility for:
    • Table
    • Temporary Table
    • Field
    • Function on field
    • String
  2. Using:
    • Select
    • Update
    • From
    • InnerJoin
    • Where
    • OrderBy
  3. Handling automatically:
    • Table aliases
    • Field aliases

Not implemented (yet)

  • Insert
  • Compound (sub-)queries
  • Functions
  • Proper Conditions

What it does not do

Connect to a database server and run the queries by itself.
It gives you the query as a string, it's then up to yopu to pass it to a SQL engine.

Example

  1. Define the elements of your query:
# Defines a Table for customers
customers_table = Table("Customers").add("id", "customerId", "mainPhone")
# Defines a Table for accounts
accounts_table = Table("Accounts", "acc").add("id", "customerId", "accountId")
# Selects the fields
select = Select(customers_table, accounts_table.fields.accountId)
# Specifies the table to takes as a FROM
from_ = From(customers_table)
# Specifies a temporary table for the select
atemptable = select.to_temptable("a_temp_table")
# Defines the InnerJoin
innerjoin = InnerJoin(accounts_table, accounts_table.fields.customerId, customers_table)
# Defines an Order By a defined field
orderby = OrderBy(accounts_table.fields.accountId)
# Adds a Where filter
where = Where(accounts_table.fields.accountId, "gt 20000 AND", customers_table.fields.mainPhone, "LIKE 001%")
  1. Inspect what those elements are made of:
# See what the object Select looks like
print(select)
# > Select(fields=[Field(name='id', alias='None', table='Customers'),
# ...    Field(name='customerId', alias='None', table='Customers'),
# ...    Field(name='mainPhone', alias='None', table='Customers'),
# ...    Field(name='accountId', alias='None', table='Accounts')])

# Initializes the QueryBuilder
query_builder = QueryBuilder(select, where, orderby, innerjoin, from_)
  1. Build your query:
# Builds the query
query_str: str = query_builder.build()
print(query_str)
# > SELECT Customers.id, Customers.customerId, Customers.mainPhone, acc.accountId
# > INTO #a_temp_table
# > FROM Customers
# > INNER JOIN Accounts acc on acc.customerId = Customers.customerId
# > WHERE acc.accountId gt 20000 AND Customers.mainPhone LIKE 001%
# > ORDER BY acc.accountId
  1. Manipulate temporary tables which components are inferred:
# Is able to infer fields from temporary tables and use it as with a regular table.
temp_select = Select(atemptable)
print(temp_select)
# > Select(fields=[Field(name='id', alias='None', table='#a_temp_table'),
# ...    Field(name='customerId', alias='None', table='#a_temp_table'),
# ...    Field(name='mainPhone', alias='None', table='#a_temp_table'),
# ...    Field(name='accountId', alias='None', table='#a_temp_table')])

# Builds the query from the temporary table
print(QueryBuilder(
        temp_select,
        From(atemptable)
    ).build())
# > SELECT #a_temp_table.id, #a_temp_table.customerId, #a_temp_table.mainPhone, #a_temp_table.accountId
# > FROM #a_temp_table

(Find it directly in the module example.py)

Compatible versions

Python 3.7 and above.

Dependencies

(None)

Authors

Wael GRIBAA Contact: g.wael@outlook.fr Made in September 2024

Metadata

Release files for sql_querystring_builder 0.0.3

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

Source distribution (sdist)

Source distribution for sql_querystring_builder 0.0.3
File Size Uploaded
sql_querystring_builder-0.0.3.tar.gz 47.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sql_querystring_builder 0.0.3
File Interpreter ABI Platform
sql_querystring_builder-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 79.8 kB

Release files / sql_querystring_builder-0.0.3.tar.gz

Download URL sql_querystring_builder-0.0.3.tar.gz
Size 47.0 kB
Tags Source
SHA-256 checksum
How to use checksums
298d9090676a4d877d0c71bed26c6fb070e9ee4174c3f23f43f688763e7f198c
BLAKE2b-256 checksum
How to use checksums
7117fec4c84a26efd250ee83798376973356f2f110d76a2e819aa3dc2b01b435
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release files / sql_querystring_builder-0.0.3-py3-none-any.whl

Download URL sql_querystring_builder-0.0.3-py3-none-any.whl
Size 32.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff8b849e4f4276d2a767ae0f1ece50043938f93e8f588d7c987abbe18f33aafa
BLAKE2b-256 checksum
How to use checksums
08eed2dd63ac4df9d92e917b8a99657ea38c8d92681cb48adbeb6159f11efee3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.5

Release history Release notifications | RSS feed

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.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