일부는 파이썬으로 재미있어졌지만 새롭고 예리하지만 패배했습니다. 도움을 주시면 대단히 감사하겠습니다.python3/pymongo "TypeError : 'NoneType'객체는 클래스 내에서 subscriptable이 아닙니다.
local_settings = Database.find_sort(AdminConstants.COLLECTION, "admin.created_date", -1, 1)
이 클래스 아래에 앉아 None을 반환 할 나타납니다 : 나는 플라스크 앱 내에서 몽고를 조회하려고, 내가 뭔가를 누락되었거나과 불법적 인 작업을 수행 한 것으로 나타났습니다. 클래스가없는 명령을 실행하면 명령 줄에 값이 반환되므로이 경우가 아니어야합니다. 누군가 나를 위해 이것을 정리해주기를 바랍니다. 클래스 외부에서이 작업을 수행하면 오류가 발생합니다. 터미널에서 작동하는 것을보고 매우 좌절감을 느끼고 필요한 곳에서 오류가 발생합니다.
편집 : 데이터베이스는 당연히 프로그램의이 시점에서 초기화됩니다. Edit2가 : 자신의 너무 확실하지 마십시오)
코드 : database.py
import pymongo
class Database(object):
URI = "mongodb://127.0.0.1:27017"
DATABASE = None
@staticmethod
def initialize():
client = pymongo.MongoClient(Database.URI)
Database.DATABASE = client['cvm']
@staticmethod
def find_sort(collection, query, direction, limit):
return Database.DATABASE[collection].find({}).sort(query, direction).limit(limit)
admin.py
from src.common.database import Database
class Admin(object):
local_settings = Database.find_sort(AdminConstants.COLLECTION, "admin.created_date", -1, 1)
오류 출력 :
Traceback (most recent call last):
File "/home/frank/PycharmProjects/cvm/src/run.py", line 1, in <module>
from src.app import app
File "/home/frank/PycharmProjects/cvm/src/app.py", line 19, in <module>
from src.models.admin.views import admin_blueprint
File "/home/frank/PycharmProjects/cvm/src/models/admin/views.py", line 4, in <module>
from src.models.admin.admin import Admin
File "/home/frank/PycharmProjects/cvm/src/models/admin/admin.py", line 6, in <module>
class Admin(object):
File "/home/frank/PycharmProjects/cvm/src/models/admin/admin.py", line 8, in Admin
local_settings = Database.find_sort(AdminConstants.COLLECTION, "admin.created_date", -1, 1)
File "/home/frank/PycharmProjects/cvm/src/common/database.py", line 27, in find_sort
return (Database.DATABASE[collection].find({}).sort(query, direction).limit(limit))
TypeError: 'NoneType' object is not subscriptable
터미널 :
Python 3.4.3 (default, Aug 9 2016, 15:36:17)
>>> import pymongo
>>> URI = "mongodb://127.0.0.1:27017"
>>> client = pymongo.MongoClient(URI)
>>> DATABASE = client['cvm']
>>> def find_sort(collection, query, direction, limit):
... return DATABASE[collection].find().sort(query, direction).limit(limit)
...
>>> COLLECTION = "admin"
>>> tmp1 = find_sort(COLLECTION, "created_date", -1, 1)
>>> list(tmp1)
[{'created_date': '20161212', '_id': ObjectId('5863f28d101bbd88b70be948')}]
시간 내 주셔서 감사합니다.
데이터베이스가 초기화되었다고 말하면서 오류가 분명하지 않다는 것을 알 수 있습니다. 어떻게 될지 모르겠습니다. 네가 그걸 어디에서 생각하고 있다고 생각하니? –
나는 내 app.py에서 초기화 중이라고 생각했다.이 경우가 아니기 때문에 관리자 클래스에서 초기화를 요청해야했다. 나는 이것이 필요하다고 생각했지만 초심자가 분명히 감독했다. 답변을 게시하고 승인 된 것으로 표시하겠습니다. 감사합니다. –