繁体   English   中英

来自 DataStax 的 cassandra-driver:如何从 Model 创建 Cassandra 数据库表?

[英]cassandra-driver from DataStax: How to create Cassandra DB table from a Model?

I want to use ORM from DataStax Python Driver for Cassandra DB (create some class with data and automatically create a table from it without writing too much CQL = )

我已经通过 docker 在 localhost 上部署了 Cassandra 服务器,并尝试像他们的手册中所写的那样做:

from cassandra.cluster import Cluster

from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
from cassandra.cqlengine.management import sync_table, create_keyspace_simple


class Person(Model):
    __keyspace__ = 'mega_keyspace'
    __table_name__ = 'person'
    id = columns.UUID(primary_key=True)
    first_name = columns.Text()
    last_name = columns.Text()


if __name__ == "__main__":
    cluster = Cluster()
    session = cluster.connect()
    # create_keyspace_simple("mega_keyspace", 2)
    session.execute("CREATE KEYSPACE IF NOT EXISTS mega_keyspace WITH REPLICATION = "
                "{ 'class' : 'SimpleStrategy', 'replication_factor' : 2 };")  # keyspace is created okay...
    sync_table(Person)  # And here's the error appears!

但是唉, sync_table(...)给了我一个错误:

cassandra.cqlengine.CQLEngineException: Connection name '<object object at 0x7fbd95322ab0>' doesn't exist in the registry.

我该如何解决?

您可以通过在代码中添加以下两行来解决该问题

from cassandra.cqlengine.connection import set_default_connection, register_coneection

在 session 定义之后的主 function 中添加以下行

register_connection(str(session), session=session)
set_default_conection(session)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM