Abh*_*kar 1 cql cassandra object-object-mapping cql3 cqlengine
我正在尝试将cqlengine CQL 3 对象映射器与在 CherryPy 上运行的 Web 应用程序挂钩。尽管文档对查询非常清楚,但我仍然不知道如何对 cassandra 数据库中的现有表(和现有键空间)进行查询。例如,我已经有了包含标题、评级、年份字段的电影表。我想进行 CQL 查询
SELECT * FROM Movies
建立连接后如何继续查询
from cqlengine import connection
connection.setup(['127.0.0.1:9160'])
在KEYSPACE被称为“TEST1”。
阿比鲁普·萨卡尔,
我强烈建议您通读以下所有文档:
安装:pip install cassandra-driver
看一看在由CQLEngine的创造者这个示例项目,rustyrazorblade:
请记住,CQLEngine 已合并到 DataStax Cassandra 驱动程序中:
你会想要做这样的事情:
CQLEngine <= 0.21.0:
from cqlengine.connection import setup
setup(['127.0.0.1'], 'keyspace_name', retry_connect=True)
如果您仍然需要创建密钥空间:
from cqlengine.management import create_keyspace
create_keyspace(
    'keyspace_name',
    replication_factor=1,
    strategy_class='SimpleStrategy'
)
设置您的 Cassandra 数据模型
您可以在同一个 .py 或您的 models.py 中执行此操作:
import datetime
import uuid
from cqlengine import columns, Model
class YourModel(Model):
    __key_space__ = 'keyspace_name'  # Not Required
    __table_name__ = 'columnfamily_name'  # Not Required
    some_int = columns.Integer(
        primary_key=True,
        partition_key=True
    )
    time = columns.TimeUUID(
        primary_key=True,
        clustering_order='DESC',
        default=uuid.uuid1,
    )
    some_uuid = columns.UUID(primary_key=True, default=uuid.uuid4)
    created = columns.DateTime(default=datetime.datetime.utcnow)
    some_text = columns.Text(required=True)
    def __str__(self):
        return self.some_text
    def to_dict(self):
        data = {
            'text': self.some_text,
            'created': self.created,
            'some_int': self.some_int,
        }
        return data
同步您的 Cassandra ColumnFamilies
from cqlengine.management import sync_table
from .models import YourModel
sync_table(YourModel)
考虑到以上所有内容,您可以将所有连接和同步放在一起,正如许多示例所概述的那样,比如我们项目中的 connection.py:
from cqlengine.connection import setup
from cqlengine.management import sync_table
from .models import YourTable
def cass_connect():
    setup(['127.0.0.1'], 'keyspace_name', retry_connect=True)
    sync_table(YourTable)
实际使用模型和数据
from __future__ import print_function
from .connection import cass_connect
from .models import YourTable
def add_data():
    cass_connect()
    YourTable.create(
        some_int=5,
        some_text='Test0'
    )
    YourTable.create(
        some_int=6,
        some_text='Test1'
    )
    YourTable.create(
        some_int=5,
        some_text='Test2'
    )
def query_data():
    cass_connect()
    query = YourTable.objects.filter(some_int=5)
    # This will output each YourTable entry where some_int = 5
    for item in query:
        print(item)
如有必要,请随时要求进一步澄清。
| 归档时间: | 
 | 
| 查看次数: | 2767 次 | 
| 最近记录: |