Je veux créer une table avec deux primary_key par son modèle django comme ci-dessous:Python/Django: Créer table avec deux primary_key en utilisant le moteur de cql
class UserView(Model):
email= columns.Text(primary_key=True)
entryLink= columns.Text(primary_key=True)
date= columns.Date(default=datetime.date.today())
mais quand je veux créer la table comme ci-dessous:
>>> from cqlengine import connection
>>> from cqlengine.management import create_table
>>> from MainAPP.models import UserView
>>> connection.setup(['127.0.0.1:9160'])
>>> create_table(UserView)
Je vois cette erreur:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "H:\Web-Programming\Python\Project\Prexter\Virtual-Environment\Lib\site-packages\cqlengine\management.py", line 97, in create_table
execute(qs)
File "H:\Web-Programming\Python\Project\Prexter\Virtual-Environment\Lib\site-packages\cqlengine\connection.py", line 172, in execute
return connection_pool.execute(query, params)
File "H:\Web-Programming\Python\Project\Prexter\Virtual-Environment\Lib\site-packages\cqlengine\connection.py", line 164, in execute
raise CQLEngineException(unicode(ex))
CQLEngineException: Bad Request: Missing CLUSTERING ORDER for column entryLink
Lorsque je supprime primary_key propriété de entryLink domaine, je n'ai pas d'erreur! mais je veux définir entryLink comme une clé primaire! Quelle est mon erreur?
Cela est vrai! Mais sachez que ma base de données est cassandra! Dans ce code, mon premier primary_key sera défini comme une partition_key et les autres primary_keys doivent être mes clés de clustering! veuillez lire cette section: [https://cqlengine.readthedocs.org/fr/latest/topics/models.html#column-options](https://cqlengine.readthedocs.org/en/latest/topics/models.html # column-options) –
Je n'achète toujours pas le fait qu'une table doit avoir plusieurs clés 'primary'. Les clés du candidat - OUI, mais la clé «primaire»? Même si Cassandra le supporte, Django ne le fait pas. – karthikr
Je vois 'Dans CQL, il y a 2 types de clés primaires: les clés de partition et les clés de clustering. Comme avec CQL, la première clé primaire est la clé de partition, et toutes les autres sont des clés de clustering, sauf si les clés de partition sont spécifiées manuellement en utilisant partition_key' - Maintenant, django ne le supporterait pas par défaut. Cependant, vous pouvez jeter un oeil aux applications tierces comme 'django-nonrel' et voir comment elle est implémentée ici. – karthikr