我正在学习使用python的cassandra对象Map器,我有一个填充数据库表的小程序。这个很好用。。。
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类的定义进行注解并取消对import的注解,那么在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
打电话。我肯定我已经把类的声明移到了模块中,但是找不到我做错了什么。我不知道为什么模块中的对象不是模型。
1条答案
按热度按时间egmofgnx1#
当你这么做的时候
import Courses
,名称Courses
将引用名为Courses
,而不是班级Courses
刚好在这个模块里面。您正在使用的函数要求其参数派生自某个类和模块
Courses
显然不满足这个条件。您可能想导入名为
Courses
这样地: