python - Python模块失败
问题描述
我正在使用 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 类的定义并取消注释导入,则在 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
通话中遇到异常。我确定我已经将类的声明移动到模块中,但找不到我做错了什么。我不确定为什么我的模块中的对象不是模型。
解决方案
当您这样做import Courses
时,名称Courses
将引用名为的模块Courses
,而不是Courses
恰好位于该模块内的类。
你使用的函数要求它的参数是从某个类派生的,而模块 Courses
显然不满足这个条件。
您可能打算导入这样的类Courses
:
from Courses import Courses
推荐阅读
- mysql - 如何从 MySQL 中的两个表中减去相同的值?
- android - 我正在尝试在我的项目中使用 recyclerview 和 cardview 但它给出了错误
- javascript - 在节点 js 中使用 saml 的 Azure SSO 不断重定向
- reactjs - 使用 docker compose 的 ReactJS 环境变量
- java - 用于从 JsonNode 读取的 Junit 测试
- python - 当我尝试将我的 python 库发布到 Pypi 时,Twine 不要求输入密码
- r - 完全结束 RSelenium 会话的正确方法?
- python - 在 scikit-learn 中保留 PCA 后的索引
- laravel - 在 Laravel 7 中找不到类“Redis”
- apache-spark - 如何通过for循环迭代列并获取值pyspark?