#python #module #cassandra
#python #модуль #cassandra
Вопрос:
Я изучаю средство сопоставления объектов Cassandra с использованием Python, и у меня есть следующая небольшая программа, которая заполняет таблицу базы данных. Это работает просто отлично…
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 и раскомментирую импорт, используя это в 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:
Когда вы это сделаете, import Courses
имя Courses
будет относиться к вызываемому модулю Courses
, а не к классу Courses
, который случайно находится внутри этого модуля.
Используемая вами функция требует, чтобы ее аргумент был производным от определенного класса, и модуль Courses
, очевидно, не удовлетворяет этому условию.
Вероятно, вы имели в виду импортировать класс, вызываемый Courses
следующим образом:
from Courses import Courses
Комментарии:
1. Стон! Да, это все! Я был почти уверен, что это было что-то простое.