Query databases quickly.
quicker | ||
.gitignore | ||
docker-compose.yaml | ||
poetry.lock | ||
pyproject.toml | ||
README.md |
Quicker is a pythonic tool for querying databases.
Quicker wraps popular Python packages:
mysqlclient
for MySQL.psycopg2
for PostgreSQL (not implemented yet).- Python builtin
sqlite
for SQLite (not implemented yet).
Connection parameters will passed to "backend" module as is.
Usage
Connection
is context manages and must be used with with
keyword. Connection
returns Query
callable object. Query
can be called in this ways:
with Connection(**config) as db:
db.exec("sql query here...")
db.query(sql query here...") # query is alias for exec()
# Query is callable and you can also do this:
with Connection(**config) as query:
query("sql query here...")
Query
cannot be called itself, you must use Connection
to correctly initialise Query
object.
Methods and properties:
query()
,exec()
. Execute SQL. There is You can use here this syntax:query('SELECT * FROM users WHERE id = %s', (15,))
.commit()
. Write changes into database.cursor
. Call MySQLdb Cursor object methods directly.
import json
from quicker import Connection
config = {
'provider': 'mysql',
'host': '127.0.0.1',
'port': 3306,
'user': 'myuser',
'database': 'mydb',
'password': 'example',
}
with Connection(**config) as query:
users = query("SELECT * FROM `users`")
print(json.dumps(users, indent=4))
users
will presented as list of dicts:
[
{
'id': 1,
'name': 'test',
'email': 'noreply@localhost'
},
{
'id': 2,
'name': 'user1',
'email': 'my@example.com'
}
]
from quicker import Connection
with Connection(provider='mysql', read_default_file='~/.my.cnf') as db:
db.query("INSERT INTO users VALUE (3, 'user2', 'user2@example.org')")
Quicker by default make commit after closing context. Set option commit=False
to disable automatic commit.