我无法从 Google App Engine 中提取对象。我正在运行 Windows 7。这是程序:
- 创建一个 CSV,其中一个字段为
pickle.dumps([[('CS', 2110), ('CS', 3300), ('CS', 3140)]])
,或一些类似的参数。
CSV 看起来像这样:
INFO,2210,"CS 2110, 3300, 3140","(lp0
(lp1
(S'CS'
p2
I2110
tp3
a(g2
I3300
tp4
a(g2
I3140
tp5
aa."
CS,3110,CS 2110 or equivalent experience,"(lp0
(lp1
(S'CS'
p2
I2110
tp3
aa."
MSE,4102,"MATH 2210, 2230, 2310, or 2940","(lp0
(lp1
(S'MATH'
p2
I2210
tp3
a(g2
I2230
tp4
a(g2
I2310
tp5
aa(lp6
(g2
I2940
tp7
aa."
(是的,这些是\n
由 s 生产的pickle.dumps()
)
- 将此文件加载到谷歌应用引擎开发服务器中:
appcfg.py upload_data --config_file="DataLoader.py" --filename="pre_req_data.csv" --kind=Course --url=http://localhost:8083/remote_api "appdir"
课程模式:
class Course(db.Model):
dept_code = db.StringProperty()
number = db.IntegerProperty()
raw_pre_reqs = db.StringProperty(multiline=True)
original_description = db.StringProperty()
def getPreReqs(self):
pickle.loads(str(self.raw_pre_reqs))
数据加载器.py:
class CourseLoader(bulkloader.Loader):
def __init__(self):
bulkloader.Loader.__init__(self, 'Course',
[('dept_code', str),
('number', int),
('original_description', str),
('raw_pre_reqs', str)
])
loaders = [CourseLoader]
- 确认数据加载成功:
尝试解开:
类 MainHandler(webapp.RequestHandler):
def get(self): self.writeOut('cock!') self.writeOut('\n') courses = Course().all() for c in courses: self.writeOut("%s => %s" % (c.raw_pre_reqs, c.getPreReqs())) def writeOut(self, string): self.response.out.write(string)
观察错误:
回溯(最近一次通话最后):
文件“C:\Program Files\Google\google_appengine\google\appengine\ext\webapp__init__.py”,第 511 行,调用 handler.get(*groups)
文件“main.py”,第 30 行,在 get self.writeOut("%s => %s" % (c.raw_pre_reqs, c.getPreReqs()))
文件“src\Models.py”,第 17 行,在 getPreReqs pickle.loads(str(self.raw_pre_reqs))
文件“C:\Python26\lib\pickle.py”,第 1374 行,加载返回 Unpickler(file).load()
文件“C:\Python26\lib\pickle.py”,第 858 行,在加载调度键中
文件“C:\Python26\lib\pickle.py”,第 966 行,在 load_string 中引发 ValueError,“insecure string pickle”
ValueError:不安全的字符串泡菜
我在这里做错了什么?