aiocqlengine
Async wrapper for cqlengine of cassandra python driver.
This project is built on cassandra-python-driver.
Installation
$ pip install aiocqlengine
Change log
0.3.0
- Due to
aiocassandrais not maintained, removed theaiocassandradependency.
0.2.0
- Create new session wrapper for
ResultSet, users need to wrap session byaiosession_for_cqlengine:from aiocqlengine.session import aiosession_for_cqlengine
- Add new method of
AioModelfor paging:async for results in AioModel.async_iterate(fetch_size=100): # Do something with results pass
0.1.1
- Add
AioBatchQuery:batch_query = AioBatchQuery() for i in range(100): Model.batch(batch_query).create(id=uuid.uuid4()) await batch_query.async_execute()
Example usage
import asyncio
import uuid
import os
from aiocqlengine.models import AioModel
from aiocqlengine.query import AioBatchQuery
from aiocqlengine.session import aiosession_for_cqlengine
from cassandra.cluster import Cluster
from cassandra.cqlengine import columns, connection, management
class User(AioModel):
user_id = columns.UUID(primary_key=True)
username = columns.Text()
async def run_aiocqlengine_example():
# Model.objects.create() and Model.create() in async way:
user_id = uuid.uuid4()
await User.objects.async_create(user_id=user_id, username='user1')
await User.async_create(user_id=uuid.uuid4(), username='user2')
# Model.objects.all() and Model.all() in async way:
print(list(await User.async_all()))
print(list(await User.objects.filter(user_id=user_id).async_all()))
# Model.object.update() in async way:
await User.objects(user_id=user_id).async_update(username='updated-user1')
# Model.objects.get() and Model.get() in async way:
user = await User.objects.async_get(user_id=user_id)
await User.async_get(user_id=user_id)
print(user, user.username)
# Model.save() in async way:
user.username = 'saved-user1'
await user.async_save()
# Model.delete() in async way:
await user.async_delete()
# Batch Query in async way:
batch_query = AioBatchQuery()
User.batch(batch_query).create(user_id=uuid.uuid4(), username="user-1")
User.batch(batch_query).create(user_id=uuid.uuid4(), username="user-2")
User.batch(batch_query).create(user_id=uuid.uuid4(), username="user-3")
await batch_query.async_execute()
# Async iterator
async for users in User.async_iterate(fetch_size=100):
pass
# The original cqlengine functions were still there
print(len(User.objects.all()))
def create_session():
cluster = Cluster()
session = cluster.connect()
# Create keyspace, if already have keyspace your can skip this
os.environ['CQLENG_ALLOW_SCHEMA_MANAGEMENT'] = 'true'
connection.register_connection('cqlengine', session=session, default=True)
management.create_keyspace_simple('example', replication_factor=1)
management.sync_table(User, keyspaces=['example'])
# Wrap cqlengine connection
aiosession_for_cqlengine(session)
session.set_keyspace('example')
connection.set_session(session)
return session
def main():
# Setup connection for cqlengine
session = create_session()
# Run the example function in asyncio loop
loop = asyncio.get_event_loop()
loop.run_until_complete(run_aiocqlengine_example())
# Shutdown the connection and loop
session.cluster.shutdown()
loop.close()
if __name__ == '__main__':
main()
License
This project is under MIT license.
Metadata
Release files for aiocqlengine 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aiocqlengine-0.3.2.tar.gz | 10.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiocqlengine-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.7 kB
Release files / aiocqlengine-0.3.2.tar.gz
| Download URL | aiocqlengine-0.3.2.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c27f754e5786235fa7b4f433e7763b4b4fb3eb87c8e83c8db2ae4880d81e8340
|
|
BLAKE2b-256 checksum How to use checksums |
abd05c7837f4a135196fdaab2f0094ae86448a2c03826afd5a780a3c51e76a4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.5 CPython/3.7.9 Darwin/20.6.0
|
Release files / aiocqlengine-0.3.2-py3-none-any.whl
| Download URL | aiocqlengine-0.3.2-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a9677e231e25ee49f0ae09d10581e9f4c3ed3d1433404415d319736cd8613a4a
|
|
BLAKE2b-256 checksum How to use checksums |
f66c74c3ca43b6ed645cc846039bda55f386d78d7d9d57a3cc97d42e8fa0c54c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.5 CPython/3.7.9 Darwin/20.6.0
|
Security for aiocqlengine 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.