Flask-CQLAlchemy handles connections to Cassandra clusters and gives a unified easier way to declare models and their columns
Installation
$ pip install flask-cqlalchemy
Dependencies
As such Flask-CQLAlchemy depends only on the cassandra-driver. It is assumed that you already have flask installed.
Flask-CQLAlchemy has been tested with versions 2.6.0, 2.7.2, 3.0.0, 3.1.0, 3.1.1, 3.2.0 and 3.2.1 of cassandra-driver. It is known to work with all versions >=2.5, but use it at your own risk. All previous versions of Flask-CQLAlchemy are deprecated.
Example
#example_app.py
import uuid
from flask import Flask
from flask.ext.cqlalchemy import CQLAlchemy
app = Flask(__name__)
app.config['CASSANDRA_HOSTS'] = ['127.0.0.1']
app.config['CASSANDRA_KEYSPACE'] = "cqlengine"
db = CQLAlchemy(app)
class User(db.Model):
uid = db.columns.UUID(primary_key=True, default=uuid.uuid4)
username = db.columns.Text(required=False)
Usage
Start a python shell
>>from example_app import db, User
>>db.sync_db()
>>user1 = User.create(username='John Doe')
For a complete list of available method refer to the cqlengine Model documentation
Configuration Options
CQLAlchemy provides all the option available in the cqlengine connection.setup() method
CASSANDRA_HOSTS
- A list of hostsCASSANDRA_KEYSPACE
- The default keyspace to useCASSANDRA_CONSISTENCY
- The global default ConsistencyLevelCASSANDRA_LAZY_CONNECT
- True if should not connect until first useCASSANDRA_RETRY_CONNECT
- True if we should retry to connect even if there was a connection failure initiallyCASSANDRA_SETUP_KWARGS
- Pass-through keyword arguments for Cluster()
API
CQLAlchemy provides some helper methods for Cassandra database management
sync_db() - Creates/Syncs all the tables corresponding to the models declared in the application
set_keyspace() - Sets the keyspace for a session. Keyspaces once set will remain the default keyspace for the duration of the session. If the change is temporary, it must be reverted back to the default keyspace explicitly.