Loading repository data…
Loading repository data…
izidorome / repository
A simpler way to use Aurora Serverless Data API with Python.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Camus is a raw SQL library enabling an ease integration with the new Aurora Serverless Data API. Its API is based on the powerful Records library.

The recommended installation method is pipenv:
$ pipenv install camus
First you need to have an Aurora cluster ARN and a Secret ARN. If don't have one yet, just follow the Data API Getting Started Guide.
With that in hands, let's drop some query in our database:
import camus
db = camus.Database(
resource_arn="arn:aws:rds:us-east-1:123456789012:cluster:your-cluster-name",
secret_arn="arn:aws:secretsmanager:us-east-1:123456789012:secret:your-secret-name-ByH87J",
dbname="mydb",
)
rows = db.query("SELECT * FROM users")
You can grab one row at time (like in Records library)
>>> rows[0]
<camus.Record at 0x109bfbd30>
Or iterate over them:
for r in rows:
print(r.name, r.email)
Like mentioned before, Camus tries to maintain the same API of the Records library, so you have the same access patterns:
row.email
row['email']
row[3]
Other options include rows.as_dict() and rows.as_dict(ordered=True)
Data API transactions are supported by Camus:
with db.transaction() as txid:
db.query("INSERT INTO users (name, email) VALUES (:name, :email)", name="Rafael", email="rafael@email.com")
db.query("UPDATE posts SET title = :title WHERE id = :id", title="New Title", id=999)
If any exception is raised when executing any of the queries, a rollback is performed automatically.
Thanks for the awesome @kennethreitz for providing his knowledge on the excelent Records library and all the talks he has given over the years!