Easy to write sql
Project description
pysqler
Easy to write sql to avoid using string slice
更方便的拼写SQL, 免除各种容易出错的拼接字符串操作
eg:
age = some_function()
sql = "select * from people where name=\'barry\' and age = {0}"
if age:
sql = sql.format(sql, age)
else:
sql = sql.format(sql, "null")
above is boring, so try this:
from pysqler import *
age = some_function()
query = Select()
query.select("*")
query.from1("people")
query.where("age", "=", age)
query.and_where("name", "=", "barry")
query_str = str(query)
print(query_str)
you don't need take care of that if if the param is string, number or none ...
Usage
Build Select SQL
from pysqler import *
query = Select()
query.select("name", "age", "address", "education", "job", "birthday")
query.from1("people")
query.where("age", ">", 10)
query.and_where("job", "like", "%it%")
query.and_where("birthday", ">", "1988-09-12 12:12:12")
query.and_where("address", "!=", None)
query.groupby("age", "education")
query.orderby("age", "DESC")
query.orderby("education", "ASC")
query.limit(5, 10)
query_str = str(query)
print(query_str)
output
SELECT city,education,AVG(age) as avg_age
FROM people
WHERE age > 10 AND job like "%it%"
AND birthday > "1988-09-12 12:12:12"
AND address IS NOT null
GROUP BY city,education
ORDER BY avg_age DESC
LIMIT 5, 10;
Build Insert SQl
insert one row
from pysqler import *
query = Insert("people")
query.put("name", "barry")
query.put("age", 10, value_on_duplicated=20)
express = Expression()
express.field("salary")
express.operator("+")
express.value(200)
express.operator("*")
express.value(3.5)
query.put("salary", 1000, value_on_duplicated=express)
query.put("address", "shanghai", value_on_duplicated="china")
query.put("education", "bachelor")
query.put("job", "engineer")
query.put("birthday", "2000-01-01")
query_str = str(query)
print(query_str)
output:
INSERT INTO people ( name,age,salary,address,education,jobs,birthday)
VALUES("barry",10,1000,"shanghai","bachelor","engineer","2000-01-01")
ON DUPLICATE KEY UPDATE age = 20,salary = salary + 200 * 3.5,
address = "china";
insert multiple rows
from pysqler import *
query = Insert("people")
query.add_columns("name", "age", "salary", "address", "education", "job", "birthday")
query.add_row("barry", 19, 3100, "shanghai", "bachelor", None,"2010-01-01")
query.add_row("jack", 24, 3600, "shanghai", "bachelor", "engineer","2010-01-09")
query.add_row("bob", 27, 8600, None, "bachelor", "engineer","1990-01-09")
query.add_row("edwin", 30, 10600, "beijing", "bachelor", "engineer","1987-01-09")
query_str = str(query)
print(query_str)
output:
INSERT INTO people ( name,age,salary,address,education,job,birthday )
VALUES( "barry",19,3100,"shanghai","bachelor",null,"2010-01-01" ),
( "jack",24,3600,"shanghai","bachelor","engineer","2010-01-09" ),
( "bob",27,8600,null,"bachelor","engineer","1990-01-09" ),
( "edwin",30,10600,"beijing","bachelor","engineer","1987-01-09" )
Build update SQl
from pysqler import *
query = Update("people")
query.put("name", "barry")
query.put("age", 10)
query.where("age", ">", 15)
query.or_where("age", "<", 5)
query_str = str(query)
print(query_str)
output:
UPDATE people SET name = "barry",age = 10
WHERE age > 15 OR age < 5;
Build delete SQl
from pysqler import *
query = Delete("people")
query.where("age", ">", 15)
query.or_where("name", "in", [9527, "barry", "jack"])
query_str = str(query)
print(query_str)
output:
DELETE FROM people WHERE age > 15 OR name in (9527,"barry","jack");
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
pysqler-0.6.0.tar.gz
(7.5 kB
view details)
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 pysqler-0.6.0.tar.gz.
File metadata
- Download URL: pysqler-0.6.0.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
420c3aef05a93f3804f988dd8300e4fa338dbd9e7ceca158a3b303d7b0aa8bea
|
|
| MD5 |
356f4d020261522d6960a1bf4c5b2eb6
|
|
| BLAKE2b-256 |
790f818c78efacf9c5c7325389aed9ef7c9f93421fb8ff42ef0774fadb6bf25d
|
File details
Details for the file pysqler-0.6.0-py2.py3-none-any.whl.
File metadata
- Download URL: pysqler-0.6.0-py2.py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0107acc0812f2d2d01a9a26cb81ca8ec8122965524d43608801dbc104ca2b50
|
|
| MD5 |
2ccede7159223b78d74a4bb195636b8e
|
|
| BLAKE2b-256 |
a6eafbc0cf4c5dd0e847a667407a60b73f9c172db2c72a4f0a6b14b9f2a3904e
|