Сбой модуля Python - PullRequest
       1

Сбой модуля Python

0 голосов
/ 14 марта 2019

Я изучаю средство отображения объектов 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 Ответ

1 голос
/ 14 марта 2019

Когда вы делаете import Courses, имя Courses будет ссылаться на модуль , называемый Courses, а не класс Courses, который находится внутри этогоmodule.

Используемая функция требует, чтобы ее аргумент был получен из определенного класса, а module Courses, очевидно, не удовлетворяет этому условию.

Вы, вероятно, хотели импортировать класс с именем Courses, например:

from Courses import Courses
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...