Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Bajra is a simple ORM API (for MySQL and PostGreSQL) that provide helpers to manage raw SQL in Python applications.
Bajra allows you to write raw SQL and forget about cursors, and it's related data structures like tuples or dicts. Also allows you to write your query by pieces, making the whole thing more readable.
Let's see a few examples!
from bajra import Bajra
from bajra.engines.postgres import PostgreSQLEngine
cater = Bajra(PostgreSQLEngine(dsn="YOUR-DATABASE-DSN"))
rows = cater.fetchall("SELECT name, surname FROM test") # That command returns a RowResult you can iterate
for row in rows:
print(row.name) # You can access to the data with dot notation.
print(row['name']) # Also as a dict-like object.
from bajra import Bajra
from bajra.engines.postgres import PostgreSQLEngine
cater = Bajra(PostgreSQLEngine(dsn="YOUR-DATABASE-DSN"))
row = cater.fetchone("SELECT name, surname FROM test WHERE name = %s", ("John", ))
print(row.name) # John
print(row.surname) # Costa
row = cater.fetchone("SELECT name, surname FROM test WHERE name = %(name)s", {'name': 'John'})
print(row.name) # John
print(row.surname) # Costa
row = cater.fetchone("SELECT name, surname FROM test WHERE name = %(name)s", name='John')
print(row.name) # John
print(row.surname) # Costa
from bajra import Bajra
from bajra.engines.postgres import PostgreSQLEngine
cater = Bajra(PostgreSQLEngine(dsn="YOUR-DATABASE-DSN"))
query = cater.query("SELECT * FROM test")
query.append("WHERE name = %(name)s", name="John")
row = cater.fetchone(query)
row.name # John
row.surname # Costa
from bajra import Bajra
from bajra.engines.postgres import PostgreSQLEngine
cater = Bajra(PostgreSQLEngine(dsn="YOUR-DATABASE-DSN"))
query = cater.query("INSERT INTO test (name, surname) VALUES")
query.append("(%(name)s, %(surname)s)", name="Thomas", surname="Jefferson")
result = cater.execute(query)
print(result.lastrowid) # Last Row ID of the last query. (If the engine supports it.)
print(result.rowcount) # How many rows retrieve the last query. (If the engine supports it.)
print(result.rownumber) # Number of rows affected by the last query. (If engine supports it.)
from bajra import Bajra
from bajra.engines.postgres import PostgreSQLEngine
cater = Bajra(PostgreSQLEngine(dsn="YOUR-DATABASE-DSN"))
cater.begin()
query = cater.query("INSERT INTO test (name, surname) VALUES")
query.append("(%(name)s, %(surname)s)", name="Marie-Cole", surname="Ross")
result = cater.execute(query)
print(result.lastrowid) # Last Row ID of the last query. (If the engine supports it.)
print(result.rowcount) # How many rows retrieve the last query. (If the engine supports it.)
print(result.rownumber) # Number of rows affected by the last query. (If engine supports it.)
cater.commit()
from bajra import Bajra
from bajra.engines.postgres import PostgreSQLEngine
def callback_on_exception(_cater, exc_type, exc_value, traceback):
print(exc_type) # <class 'psycopg2.ProgrammingError'>
cater = Bajra(PostgreSQLEngine(dsn="YOUR-DATABASE-DSN"))
with cater.transaction(rollback_on_exc=True, callback_exc=callback_on_exception):
cater.execute("INSERT INTO test (name, surname) VALUES %s, %s", ("Augustus", "Zuma"))
row = cater.fetchone("SELECT * FROM test WHERE name=%s AND surname=%s", ("Augustus", "Zuma"))
print(row) # None, Bajra has perfomed a rollback due to a exception.
If you have an idea you want to contribute in Bajra, clone the repo and raise a pull request with your feature!
FAQs
A efficient raw SQL ORM
We found that bajra demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.