2017-01-10 9 views
0

Datastax Cassandra Driver(Python):私たちが作成するデータモデルからCQLファイルを生成する方法はありますか?私は、データモデルがある場合の例としては:Cassandra Model(datastaxドライバ: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を使用してカサンドラにテーブルを作成することができます知っているが、ここに私の目的は、上記モデルから生成されたCREATE TABLE文の同等のCQL文を導出することです。方法はありますか?

+0

テーブルを作成してから 'cqlsh'を実行すると、' yourtable; 'を記述して対応する' CREATE TABLE ... '文を得ることができます。 – xmas79

+0

@ xmas79ご協力ありがとうございます。私は質問を掲示する前にこれが私の頭を越えたことを認めなければなりません。私はPythonでプログラミング環境を離れることなくこれを得る方法を探しています。 1つの解決策は:pythonから 'desc table'を発行する、より良い方法はありますか? – Segmented

答えて

1

テーブルを作成しても大丈夫な場合は、テーブルを同期させてから、ドライバのメタデータAPIを使用して文字列を再現します。

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

これはcqlshためdesc出力を生成する正確なコードです。これはAPIの一部、およびように変更する可能性が非常に高いではないことを

cassandra.cqlengine.management._get_create_table

注:

代わりに、これらのモデルからCQLを生成cqlengine管理機能を使用してテーブルを作成しないようにすることができますコアドライバメタデータに置き換えられます。

+0

詳細な回答ありがとう!私は、データベースの移行を行う方法を探していました(これは、ポップアップのためにalembicが行うようなものです)。私はDatastaxドライバで正式にサポートされている人はいないと考えていますが、CQLで動作するものがいくつか見つかりました。 – Segmented

関連する問題