【问题标题】:CQL from Cassandra Model (datastax driver: python)来自 Cassandra 模型的 CQL(datastax 驱动程序:python)
【发布时间】:2017-05-25 03:35:06
【问题描述】:

Datastax Cassandra 驱动程序 (Python):有没有办法从我们创建的数据模型生成 CQL 文件?例如,如果我有一个数据模型:

class ExampleModel(Model):
example_id      = columns.UUID(primary_key=True, default=uuid.uuid4)
example_type    = columns.Integer(index=True)
created_at      = columns.DateTime()
description     = columns.Text(required=False)

我知道我可以使用 sync_table 在 Cassandra 中创建表,但我的目标是为从上面的模型生成的创建表语句派生等效的 CQL 语句。有什么办法吗?

【问题讨论】:

  • 可以创建表,然后用cqlsh可以describe yourtable;得到对应的CREATE TABLE...语句。
  • @xmas79 感谢您的帮助。我必须承认,在我发布问题之前,这也是我的想法。我正在寻找一种在不离开 Python 编程环境的情况下获得此功能的方法。一种解决方案是:从 python 发出desc table,有没有更好的方法?

标签: python cassandra


【解决方案1】:

如果您可以创建表,最可靠的方法是同步表,然后使用驱动程序的元数据 API 重现字符串。

Cluster.metadata.keyspaces[ks].tables[t] 和 TableMetadata.export_as_string

这是为 cqlsh 生成 desc 输出的确切代码。

或者,您可以通过使用从这些模型生成 CQL 的 cqlengine 管理功能来避免创建表:

cassandra.cqlengine.management._get_create_table

请注意,这不是 API 的一部分,并且很可能会随着核心驱动元数据等价物的替换而发生变化。

【讨论】:

  • 感谢您的详细解答!我一直在寻找进行数据库迁移的方法(就像 alembic 为 postgress 所做的那样)。我相信 Datastax 驱动程序还没有正式支持,但发现一些在 CQL 上工作,因此问题。
猜你喜欢
  • 2016-11-14
  • 2016-11-29
  • 2018-09-26
  • 1970-01-01
  • 2016-02-27
  • 2017-01-20
  • 2015-08-06
  • 1970-01-01
  • 2018-04-21
相关资源
最近更新 更多