modeldefinitionexception(“至少需要一个主键”),即使已经定义了主键

qhhrdooz  于 2021-06-14  发布在  Cassandra
关注(0)|答案(0)|浏览(322)

我使用cqlalchemy与使用python的cassandradb进行交互。运行应用程序时,我面临错误

  1. raise ModelDefinitionException("At least 1 primary key is required.")
  2. cassandra.cqlengine.models.ModelDefinitionException: At least 1 primary key is required.

模型看起来像:

  1. class Model1(db.Model):
  2. id = db.columns.UUID(primary_key=True, default=uuid.uuid4),
  3. type = db.columns.Text(required=False)
  4. user_id = db.columns.UUID(primary_key=True, default=uuid.uuid4)

哪里 db = CQLAlchemy() cassandra表ddl是:

  1. CREATE TABLE keyspace1.model1 (
  2. id uuid,
  3. user_id uuid,
  4. type text,
  5. PRIMARY KEY (id, user_id)
  6. )

编辑:我在cqlengine/models.py文件级进行了调试。我注意到所有的列都被捕获为 tuple ```
'id': (<cqlengine.columns.UUID object at 0x7f86b2c7c940>,), 'user_id': (<cqlengine.columns.UUID object at 0x7f86b2c7c9b0>,)

  1. cqlengine `attrs` 通过检查 `columns.Column` .

column_definitions = [(k, v) for k, v in attrs.items() if isinstance(v, columns.Column)]

  1. cqlengine/models.pygithub链接
  2. 这就是为什么它实际上无法获取任何列,因此没有定义主键。
  3. 知道为什么列被选为元组类型而不是columns.column吗?
  4. 谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题