我正在使用Python学习Cassandra对象映射器,我有下面的小程序来填充数据库表。这个很好..。
from cassandra.cqlengine.connection import setup
from cassandra.cqlengine.management import sync_table
from cassandra.cqlengine.models import Model
from cassandra.cqlengine import columns
from uuid import uuid4
##import Courses
class Courses(Model):
id = columns.UUID(primary_key = True)
title = columns.Text()
duration = columns.Integer()
setup(['chelly', ], 'objectlake', protocol_version = 3)
# Create some courses to inflict on our hapless trainees
courses = [
{ 'title' : "Conflict of Interest" , 'duration' : 120 },
{ 'title' : "Resolving Conflict" , 'duration' : 60 },
{ 'title' : "Time Cards" , 'duration' : 30 },
{ 'title' : "PTO" , 'duration' : 30 },
{ 'title' : "Managing Upwards" , 'duration' : 120 }
]
sync_table(Courses)
for course in courses:
Courses.create(id = uuid4(), title = course['title'], duration = course['duration'])
print('Done-ish?')但是,如果我对课程类的定义进行注释并取消对导入的注释,请使用Courses.py中的如下内容:
from cassandra.cqlengine.models import Model
from cassandra.cqlengine import columns
class Courses(Model):
id = columns.UUID(primary_key = True)
title = columns.Text()
duration = columns.Integer()我得到一个异常ValueError: Models must be derived from base Model.在sync_table调用。我确信我已经把类的声明移到模块中了,但是找不到我做错了什么。我不知道为什么模块中的对象不是模型。
发布于 2019-03-14 20:42:40
当您执行import Courses时,名称Courses将引用名为Courses的模块,而不是指恰好位于该模块内的类Courses。
您使用的函数要求它的参数来自某个类,而且模块Courses显然不满足这个条件。
您可能打算像这样导入名为Courses的类:
from Courses import Courseshttps://stackoverflow.com/questions/55171312
复制相似问题