r4fek / django-cassandra-engine

Django Cassandra Engine - the Cassandra backend for Django
BSD 2-Clause "Simplified" License
365 stars 85 forks source link

'django_cassandra_engine' isn't an available database backend. #9

Closed ralpht closed 9 years ago

ralpht commented 9 years ago

Hi r4fek, I am sure I am doing something wrong but I tried to setup a project using the instructions provided and I get the following error:

django.core.exceptions.ImproperlyConfigured: 'django_cassandra_engine' isn't an available database backend.

Any ideas.

Ralph

r4fek commented 9 years ago

Let me know if it works with version 0.1.1.

ralpht commented 9 years ago

Unfortunately no. Same issue.

r4fek commented 9 years ago

If you're using Django 1.7 make sure, that 'django_cassandra_engine' is first app on your INSTALLED_APPS list. Also let me know if you're using cassandra as default db backend or secondary. I tested it today and it seems to work for me..

r4fek commented 9 years ago

See workflow for testproject:

$ pip list argh (0.25.0) cassandra-driver (2.1.1) cqlengine (0.19.0) Django (1.7) django-cassandra-engine (0.1.1) djangotoolbox (1.6.2) futures (2.1.6) ghp-import (0.4.1) Jinja2 (2.7.1) Markdown (2.3.1) MarkupSafe (0.23) mkdocs (0.9) pathtools (0.1.2) pip (1.4.1) PyYAML (3.10) setuptools (1.1.5) six (1.8.0) watchdog (0.7.0) wsgiref (0.1.2)

$ python manage.py syncdb --database cassandra Creating keyspace db.. Syncing testproject.app.models.ExampleModel Syncing testproject.app.models.ExampleModel2

$ python manage.py syncdb Operations to perform: Synchronize unmigrated apps: django_cassandra_engine, app Apply all migrations: admin, contenttypes, auth, sessions Synchronizing apps without migrations: Creating tables... Installing custom SQL... Installing indexes... Running migrations: No migrations to apply.

$ python manage.py runserver

Performing system checks...

System check identified no issues (0 silenced). October 17, 2014 - 22:23:48 Django version 1.7, using settings 'testproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. [17/Oct/2014 22:23:51] "GET / HTTP/1.1" 200 1759

It works like a charm ;/

ralpht commented 9 years ago

I have setup django-cassandra-engine as the first installed app. django_cassandra_engine is my default db.

Not sure what it wrong.

INSTALLED_APPS = ( 'django_cassandra_engine' 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles',

Uncomment the next line to enable the admin:

# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',

)

pip list altgraph (0.10.1) bdist-mpkg (0.4.4) beautifulsoup4 (4.3.2) bonjour-py (0.3) cassandra-driver (2.1.2) cqlengine (0.19.0) decorator (3.4.0) Django (1.7) django-appengine-toolkit (0.2.1) django-blog-zinnia (0.13) django-cassandra-engine (0.1.1) django-mptt (0.6.1) django-tagging (0.3.2) django-xmlrpc (0.1.5) djangotoolbox (1.6.2) futures (2.2.0) GoogleAppEngineCloudStorageClient (1.9.5.0) macholib (1.5) matplotlib (1.1.1) modulegraph (0.10.1) networkx (1.9.1) numpy (1.6.2) Pillow (2.5.3) pip (1.5.6) py2app (0.7.1) pycrypto (2.6.1) pymongo (2.7.2) pyobjc-core (2.3.2a0) pyobjc-framework-AddressBook (2.3.2a0) pyobjc-framework-AppleScriptKit (2.3.2a0) pyobjc-framework-AppleScriptObjC (2.3.2a0) pyobjc-framework-Automator (2.3.2a0) pyobjc-framework-CFNetwork (2.3.2a0) pyobjc-framework-Cocoa (2.3.2a0) pyobjc-framework-Collaboration (2.3.2a0) pyobjc-framework-CoreData (2.3.2a0) pyobjc-framework-CoreLocation (2.3.2a0) pyobjc-framework-CoreText (2.3.2a0) pyobjc-framework-DictionaryServices (2.3.2a0) pyobjc-framework-ExceptionHandling (2.3.2a0) pyobjc-framework-FSEvents (2.3.2a0) pyobjc-framework-InputMethodKit (2.3.2a0) pyobjc-framework-InstallerPlugins (2.3.2a0) pyobjc-framework-InstantMessage (2.3.2a0) pyobjc-framework-InterfaceBuilderKit (2.3.2a0) pyobjc-framework-LatentSemanticMapping (2.3.2a0) pyobjc-framework-LaunchServices (2.3.2a0) pyobjc-framework-Message (2.3.2a0) pyobjc-framework-OpenDirectory (2.3.2a0) pyobjc-framework-PreferencePanes (2.3.2a0) pyobjc-framework-PubSub (2.3.2a0) pyobjc-framework-QTKit (2.3.2a0) pyobjc-framework-Quartz (2.3.2a0) pyobjc-framework-ScreenSaver (2.3.2a0) pyobjc-framework-ScriptingBridge (2.3.2a0) pyobjc-framework-SearchKit (2.3.2a0) pyobjc-framework-ServiceManagement (2.3.2a0) pyobjc-framework-SyncServices (2.3.2a0) pyobjc-framework-SystemConfiguration (2.3.2a0) pyobjc-framework-WebKit (2.3.2a0) pyobjc-framework-XgridFoundation (2.3.2a0) pyOpenSSL (0.13) pyparsing (2.0.2) PyRSS2Gen (1.0.0) python-dateutil (1.5) pytz (2014.7) scipy (0.11.0) setuptools (6.0.2) six (1.8.0) Twisted (12.2.0) vboxapi (1.0) wsgiref (0.1.2) xattr (0.6.4) zope.interface (3.8.0)

r4fek commented 9 years ago

@ralpht err, comma after 'django_cassandra_engine'?

r4fek commented 9 years ago

@ralpht have you resolved it?

ralpht commented 9 years ago

I fixed the typo in settings but the problem still exists. Your test project works for me so it clearly something I am doing. When I have time I will do a little more research and get back to you.

Thanks

bankifsc commented 9 years ago

Hi, I am getting the following error..

django.core.exceptions.ImproperlyConfigured: 'django_cassandra_engine' isn't an available database backend. Try using 'django.db.backends.XXX', where XXX is one of: 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3' Error was: cannot import name 'EscapeUnicode'

my setting INSTALLED_APPS = ( 'django_cassandra_engine', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', )

DATABASES = { 'default': { 'ENGINE': 'django_cassandra_engine', 'NAME': 'kkbank', 'TEST_NAME': 'test_db', 'HOST': '127.0.0.1', 'OPTIONS': { 'replication': { 'strategy_class': 'SimpleStrategy', 'replication_factor': 1 } } } }

pip list cassandra-driver (2.1.4.post) cqlengine (0.21.0) defusedxml (0.4.1) Django (1.6.5) django-cassandra-engine (0.2.3) django-haystack (2.3.1) django-image-cropping (0.8.3) django-mobile (0.4.0) django-nose (1.2) django-pagination (1.0.7) django-phonenumber-field (0.6) django-selectable (0.7.0) django-sendsms (0.2.2) django-sms-gateway (1.2.1) django-tables2 (0.14.0) django-treebeard (2.0) django-twilio (0.7) djangotoolbox (1.6.2) djappsettings (0.1.0) easy-thumbnails (2.1) elasticsearch (1.2.0) futures (2.1.6) httplib2 (0.9) nose (1.3.3) phonenumbers (6.2.0) pillow (2.5.3) pip (1.5.6) psycopg2 (2.5.2) python-bidi (0.3.4) rapidsms (0.17.0) reportlab (3.1.8) requests (1.2.0) setuptools (2.1) six (1.7.3) soappy (0.12.22) socksipy-branch (1.01) suds-jurko (0.6) twilio (3.6.6) unittest2py3k (0.5.1) urllib3 (1.9.1)

thanks

r4fek commented 9 years ago

Do not use django_cassandra_engine as default database backend since you're using django apps. Please take a look at testproject with secondary cassandra settings.

bankifsc commented 9 years ago

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }, 'cassandra': { 'ENGINE': 'django_cassandra_engine', 'NAME': 'db', 'USER': 'user', 'PASSWORD': 'pass', 'TEST_NAME': 'test_db', 'HOST': '127.0.0.1', 'OPTIONS': { 'replication': { 'strategy_class': 'SimpleStrategy', 'replication_factor': 1, }, 'connection': { 'lazy_connect': True, 'retry_connect': True, 'consistency': ConsistencyLevel.ALL }, 'session': { 'default_timeout': 15 } } } }

following error:

django.core.exceptions.ImproperlyConfigured: 'django_cassandra_engine' isn't an available database backend. Try using 'django.db.backends.XXX', where XXX is one of: 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3' Error was: cannot import name 'EscapeUnicode'

thanks

wakwanza commented 9 years ago

Django 1.8 with the last up-todate version of the cassandra-engine package with the following DB backends declaration on OSX 10 with python2.7:

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }, 'cassandra': { 'ENGINE': 'django_cassandra_engine', 'NAME': 'mydb', 'HOST': 'xx.xx.xx.xx', 'OPTIONS': { 'replication': { 'strategy_class': 'SimpleStrategy', 'replication_factor': 1 } } } }

throws the following error

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 312, in execute
    django.setup()
  File "/Library/Python/2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Library/Python/2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Library/Python/2.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Library/Python/2.7/site-packages/django_cassandra_engine/models.py", line 3, in <module>
    cassandra_connection = get_cassandra_connection()
  File "/Library/Python/2.7/site-packages/django_cassandra_engine/utils.py", line 106, in get_cassandra_connection
    for _alias, connection in get_cassandra_connections():
  File "/Library/Python/2.7/site-packages/django_cassandra_engine/utils.py", line 96, in get_cassandra_connections
    engine = connections[alias].settings_dict.get('ENGINE', '')
  File "/Library/Python/2.7/site-packages/django/db/utils.py", line 240, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/Library/Python/2.7/site-packages/django/db/utils.py", line 129, in load_backend
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'django_cassandra_engine' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
    u'base', u'mysql', u'oracle', u'postgresql_psycopg2', u'sqlite3'
Error was: No module named queue
r4fek commented 9 years ago
Error was: No module named queue

Do you have import queue somewhere in your code?

wakwanza commented 9 years ago

Im using a redis as a sessioncache based on https://github.com/ui/django-rq for session storage and async processing of some of the jobs. So my worker startup looks like this fro the default worker process:

python manage.py rqworker default

and the cache is as: CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }

wakwanza commented 9 years ago

So did some more digging .Seems its a bug with the OSX version of six https://datastax-oss.atlassian.net/browse/PYTHON-77 as the older version has issues and defult env on OSX 10.10 is still 1.4 .Upgrade to latest 1.9 fixed the issue in updated virtualenv.