2

我想通过它的 django 模型创建一个包含两个 primary_key 的表,如下所示:

class UserView(Model):
    email= columns.Text(primary_key=True)
    entryLink= columns.Text(primary_key=True)
    date= columns.Date(default=datetime.date.today())

但是当我想创建如下表时:

>>> 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)

我看到这个错误:

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

当我从entryLink字段中删除primary_key属性时,我没有错误!但我想将 entryLink 定义为 primary_key!我的错误是什么?

4

2 回答 2

1

一个数据库表不能有 2 个主键。如果您正在寻找复合主键,Django 还不支持

现在,您可能正在寻找的是unique=True(候选键)。

class UserView(Model):
    email= columns.Text(primary_key=True)
    entryLink= columns.Text(unique=True)
    date= columns.Date(default=datetime.date.today())

您也可以阅读这篇文章以获得更好的理解

于 2013-07-12T17:43:38.287 回答
1

我找到了我的答案!这是一个有趣的错误!我在entryLink字段中有一个大写字符,它导致了错误!这太有趣了!因为这仅适用于 primary_key!其他领域则不然!!!primary_keys 中不能有大写字符!

我修改后的代码:

class UserView(Model):
    email= columns.Text(primary_key=True)
    link= columns.Text(primary_key = True)
    date= columns.Date(default=datetime.date.today())
于 2013-07-13T00:04:51.513 回答