SqlQueryBuilder
Wraps string building of MS SQL queries. It provides first level validation.
Current features
- Provides a string building facility for:
- Table
- Temporary Table
- Field
- Function on field
- String
- Using:
- Select
- Update
- From
- InnerJoin
- Where
- OrderBy
- 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
- 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%")
- 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_)
- 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
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| sql_querystring_builder-0.0.3.tar.gz | 47.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|