如何将Django连接到Cassandra Data base?

时间:2014-05-07 08:33:49

标签: python django cassandra

我有一个项目,我必须使用Django数据库Cassandra进行开发。我在那里查看了文档,但只有mysqlsklitepostgre数据库的信息,而不是Cassandra。我正在寻找一种将Django连接到Cassandra的示例方式:

我知道我必须在文件setting.py中设置数据库配置:

    # Add "postgresql_psycopg2", "mysql", "sqlite3" or "oracle".    
    "ENGINE": "django.db.backends.cassandra",   
    # DB name or path to database file if using sqlite3.    
    "NAME": "test",           
    # Not used with sqlite3.    
    "USER": "",    
    enter code here# Not used with sqlite3.   
    "PASSWORD": "",    
    # Set to empty string for localhost. Not used with sqlite3.    
    "HOST": "127.0.0.1",    

但它会引发错误:

Error was: No module named django_cassandra.base

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

您可以在 Django Project文件夹中为 settings.py 使用此模式:

    DATABASES = {
    'default': {
        'ENGINE': 'django_cassandra_engine', # Install this engine from https://pypi.org/project/django-cassandra-engine/
        'NAME': 'yourkeyspace', # the keyspace was created at cassandra 
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',  # You can add your hosts here (use ,)
        'OPTIONS': {
            'replication': {
                'strategy_class': 'SimpleStrategy', # or any strategy you need
                'replication_factor': 1 # Depend on your decision
            },
            'connection': {
                'consistency': ConsistencyLevel.ONE,
                'lazy_connect': True,
                'retry_connect': True,
                'port': 9042, # default port
                #  You can add any connection options for cassandra.Cluster() here!
                          }
                     }
              }
        }

答案 1 :(得分:1)

Django目前不支持nosql作为后端。有一个很好的类似django的ORM叫做cqlengine https://github.com/cqlengine/cqlengine,它正在积极开发中,而数据集团团队表示他们正在与cqlengine人合作。虽然您无法在settings.py中使用数据库defs,但您可以使用类似django的命令,例如,thingy.objects.all()来访问您的cassandra。

在datastax站点上找到的本机datastax python驱动程序,更面向cqlsh,可能会提醒您oracle连接器,但速度要快一些。

链接中建议的答案非常陈旧。

希望这有帮助。