AttributeError:“list”对象在 App Engine 中没有属性“has_key”

2024-01-06

我在应用程序引擎的批量加载器方面遇到一些问题。下面我插入了bulkloader.yaml、hs_transformers.py 和错误日志。知道是什么产生了这个错误吗?我的hs_transformer如果我返回单个实体(只是一个实体,而不是其中包含一个实体的列表,也会引发错误),则该函数有效,但是当我尝试返回实体列表时,会发生此错误。根据应用程序引擎的文档,我应该能够返回实体列表。

.yaml 文件:

python_preamble:
- import: re
- import: base64
- import: google.appengine.ext.bulkload.transform
- import: google.appengine.ext.bulkload.bulkloader_wizard
- import: google.appengine.ext.db
- import: google.appengine.api.datastore
- import: hs_transformers
- import: datetime


transformers:

- kind: HBO
  connector: csv

  property_map:
    - property: __key__
      external_name: swfServerID
      import_transform: hs_transformers.string_null_converter

    - property: IP_address
      external_name: IP
      import_transform: hs_transformers.string_null_converter 

    - property: name
      external_name: swfServer
      import_transform: hs_transformers.swf_server_converter

    - property: last_checkin_date
      external_name: clockStampOfLastCheckin
      import_transform: hs_transformers.clock_stamp_of_last_checkin_converter

#    - property: last_update
#      external_name: clockStampOfLastUpdate
#      import_transform: transform

    - property: form_factor
      external_name: formFactor
      import_transform: hs_transformers.string_null_converter

    - property: serial_number
      external_name: serialNumber
      import_transform: hs_transformers.string_null_converter

    - property: allow_reverse_SSH
      external_name: allowReverseSSH
      import_transform: hs_transformers.boolean_converter

    - property: insight_account
      external_name: FK_insightAccountID
      import_transform: hs_transformers.integer_converter

    - property: version
      external_name: ver
      import_transform: hs_transformers.string_null_converter

  post_import_function: hs_transformers.post_hbo 

hs_transformers.py

def post_hbo(input_dict, entity_instance, bulkload_state):  
    return_entities = []

    model_key = db.Key.from_path("Contact", 1)
    logging.error("MODEL KEY " +str(model_key))
    logging.error("MODEL KEY TYPE " +str(type(model_key)))
    keys = db.allocate_ids(model_key, 1)
    logging.error("KEYS " +str(keys))
    logging.error("KEYS TYPE " +str(type(keys)))
    id = keys[0]
    logging.error("ID " +str(id))
    logging.error("ID TYPE " +str(type(id)))

    contact_key = db.Key.from_path("Contact", id)
    logging.error("CONTACT KEY " +str(contact_key))
    logging.error("CONTACT KEY TYPE " +str(type(contact_key)))
    hbo_key =  db.Key.from_path("HBO", input_dict["swfServerID"])
    logging.error("HBO KEY " +str(hbo_key))
    logging.error("HBO KEY TYPE " +str(type(hbo_key)))

    contact = Contact(key=contact_key)

    map = HBOContact()
    map.hbo = hbo_key
    map.contact = contact_key

    return_entities.append(contact)
    return_entities.append(map)

    logging.error("CONTACT KEY AGAIN? " +str(contact.key()))
    logging.error("CONTACT TYPE " +str(type(contact)))
    logging.error("MAP TYPE " +str(type(map)))

    logging.error("RETURN LIST " + str(return_entities))

    return return_entities

最后

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Jack Frost>cd..

C:\Users>cd..

C:\>cd "Program Files (x86)"

C:\Program Files (x86)>cd "Google App Engine SDK"

C:\Program Files (x86)\Google App Engine SDK>python appcfg.py upload_data --url=http://bulkloader-testing.appspot.com/remote_api --config_file="C:\Users\Jack Frost\Eclipse Workspace\Headsprout\GAE 1.27.2012\src\utilities\bulkloader\bulkloader.yaml" --filename="C:\Users\Jack Frost\Eclipse Workspace\Headsprout\GAE 1.27.2012\src\utilities\bulkloader\csv_files\smallhbos.csv" --kind=HBO
Uploading data records.
[INFO    ] Logging to bulkloader-log-20120131.160426
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
[INFO    ] Opening database: bulkloader-progress-20120131.160426.sql3
[INFO    ] Connecting to bulkloader-testing.appspot.com/remote_api
[INFO    ] Starting import; maximum 10 entities per post
2012-01-31 16:04:27,135 ERROR hs_transformers.py:66 type object 'datetime.datetime' has no attribute 'datetime'
2012-01-31 16:04:27,137 ERROR hs_transformers.py:17 MODEL KEY ahRzfmJ1bGtsb2FkZXItdGVzdGluZ3INCxIHQ29udGFjdBgBDA
2012-01-31 16:04:27,138 ERROR hs_transformers.py:18 MODEL KEY TYPE <class 'google.appengine.api.datastore_types.Key'>
2012-01-31 16:04:27,461 ERROR hs_transformers.py:20 KEYS (16031L, 16031L)
2012-01-31 16:04:27,463 ERROR hs_transformers.py:21 KEYS TYPE <type 'tuple'>
2012-01-31 16:04:27,463 ERROR hs_transformers.py:23 ID 16031
2012-01-31 16:04:27,464 ERROR hs_transformers.py:24 ID TYPE <type 'long'>
2012-01-31 16:04:27,466 ERROR hs_transformers.py:27 CONTACT KEY ahRzfmJ1bGtsb2FkZXItdGVzdGluZ3IOCxIHQ29udGFjdBiffQw
2012-01-31 16:04:27,466 ERROR hs_transformers.py:28 CONTACT KEY TYPE <class 'google.appengine.api.datastore_types.Key'>
2012-01-31 16:04:27,467 ERROR hs_transformers.py:30 HBO KEY ahRzfmJ1bGtsb2FkZXItdGVzdGluZ3IKCxIDSEJPIgEzDA
2012-01-31 16:04:27,467 ERROR hs_transformers.py:31 HBO KEY TYPE <class 'google.appengine.api.datastore_types.Key'>
2012-01-31 16:04:27,469 ERROR hs_transformers.py:42 CONTACT KEY AGAIN? ahRzfmJ1bGtsb2FkZXItdGVzdGluZ3IOCxIHQ29udGFjdBiffQw
2012-01-31 16:04:27,469 ERROR hs_transformers.py:43 CONTACT TYPE <class 'shared.datastore.Contact'>
2012-01-31 16:04:27,470 ERROR hs_transformers.py:44 MAP TYPE <class 'shared.datastore.HBOContact'>
2012-01-31 16:04:27,470 ERROR hs_transformers.py:46 RETURN LIST [<shared.datastore.Contact object at 0x0000000003DBBB00>, <shared.datastore.HBOContact object at 0x0000000003DBBC18>]
[ERROR   ] [WorkerThread-0] WorkerThread:
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google App Engine SDK\google\appengine\tools\adaptive_thread_pool.py", line 176, in WorkOnItems
status, instruction = item.PerformWork(self.__thread_pool)
  File "C:\Program Files (x86)\Google App Engine SDK\google\appengine\tools\bulkloader.py", line 764, in PerformWork
transfer_time = self._TransferItem(thread_pool)
  File "C:\Program Files (x86)\Google App Engine SDK\google\appengine\tools\bulkloader.py", line 933, in _TransferItem
self.content = self.request_manager.EncodeContent(self.rows)
  File "C:\Program Files (x86)\Google App Engine SDK\google\appengine\tools\bulkloader.py", line 1394, in EncodeContent
entity = loader.create_entity(values, key_name=key, parent=parent)
  File "C:\Program Files (x86)\Google App Engine SDK\google\appengine\ext\bulkload\bulkloader_config.py", line 446, in create_entity
self.__track_max_id(entity)
  File "C:\Program Files (x86)\Google App Engine SDK\google\appengine\ext\bulkload\bulkloader_config.py", line 420, in __track_max_id
elif not entity.has_key():
AttributeError: 'list' object has no attribute 'has_key'
[INFO    ] [WorkerThread-1] Backing off due to errors: 1.0 seconds
[INFO    ] An error occurred. Shutting down...
[ERROR   ] Error in WorkerThread-0: 'list' object has no attribute 'has_key'

[INFO    ] 9 entities total, 0 previously transferred
[INFO    ] 0 entities (2364 bytes) transferred in 1.5 seconds
[INFO    ] Some entities not successfully transferred

还以为我会粘贴 code.google.com 关于 post_import_function 的内容

post_import_function(input_dict,实例,bulkload_state_copy)函数名称

您的函数必须返回以下内容之一: None,这意味着跳过导入此记录;单个实体(通常是传入的实例参数);或要导入的多个实体的列表。

当我注释掉 post_import_transform 函数中的所有代码并只写 return None 时,我仍然遇到相同的错误;然而,这与 code.google.com 矛盾。

http://code.google.com/appengine/docs/python/tools/uploadingdata.html http://code.google.com/appengine/docs/python/tools/uploadingdata.html


浏览了相关代码,看起来像是一个错误。

您的导入后功能在其中运行dict_to_entity http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/bulkload/bulkloader_config.py#131,它只返回函数返回的任何内容。create_entity http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/bulkload/bulkloader_config.py#430喂什么dict_to_entity返回到__track_max_id http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/bulkload/bulkloader_config.py#406,这似乎没有正确解释列表或无。

我建议您将此作为错误归档App Engine 问题跟踪器 http://code.google.com/p/googleappengine/issues/entry.

请注意,您可以在本地 SDK 中轻松修复此问题。基本上改变__track_max_id看起来像:

def __track_max_id(self, entity):
  """Check the entity to see it has a numeric ID higher than any seen so far.

  High IDs are stored in self.high_ids[path-to-entity-kind].
  They are not tracked if self.increment_id is None.

  Args:
    entity: An entity with a key.
  """
  if not self.increment_id:
    return
  if not entity:
    return

  if isinstance(entity, datastore.Entity):
    entities = [entity]
  else:
    entities = entity

  for entity in entities:
    if not entity.key():
      continue
    key = entity.key()
    key_id = key.id()
    if not key_id:
      continue
    path = tuple(key.to_path()[:-1])
    if self.high_ids.get(path, 0) < key_id:
      self.high_ids[path] = key_id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AttributeError:“list”对象在 App Engine 中没有属性“has_key” 的相关文章

  • tensorflow Protobuf编译问题

    我想为 google 对象检测 API 编译 protobuf 库 我按照官方教程输入protoc object detection protos proto python out 然后我得到的是 object detection prot
  • 只使用 Django 的某些部分?

    我喜欢 Django 但对于一个特定的应用程序 我只想使用它的一部分 但我对 Django 的内部工作原理还不够熟悉 所以也许有人可以指出我必须做什么的正确方向查看 具体来说 我想使用 模型和数据库抽象 The 缓存API http doc
  • Google AppEngine 的替代品?

    我最近必须在 Google AppEngine 上实现一个项目 一开始我持怀疑态度 但 Appengine 上有一些非常好的方法 没有服务器设置 一切都开箱即用 Gzip 库等 一键部署 在 Mac 上启动 GAE Launcher 并单击
  • 如何为 Intellij/PyCharm 设置 PYTHONSTARTUP 脚本

    我尝试添加PYTHONSTARTUP环境变量 我还尝试了自定义启动脚本 但更令人惊讶的是 这also没有工作 npa别名无法识别 出于一点绝望 我什至尝试添加到interpreter options 那什么也没做 实际上是什么Interpr
  • scipy.misc.imshow RuntimeError('无法执行图像视图')

    我正在测试scipy misc imshow https docs scipy org doc scipy 0 15 1 reference generated scipy misc imshow html我得到了运行时错误 无法执行图像查
  • 小数缓存是Python规范中定义的还是一个实现细节?

    Python 似乎有一个所谓的 小数字缓存 用于存储 5 到 256 范围内的数字 我们可以使用以下程序来演示这一点 for i in range 7 258 if id i id i 0 print i is cached else pr
  • 如何从 Lua 调用 Python 函数?

    我想从我的 lua 文件运行 python 脚本 我怎样才能实现这个目标 Example Python代码 sum py file def sum from python a b return a b Lua code main lua f
  • Seaborn 热图中的自定义调色板间隔

    我正在尝试绘制一个heatmap https seaborn pydata org generated seaborn heatmap html使用seaborn库 绘图函数如下所示 def plot confusion matrix da
  • python 脚本中 os.system 的 256 和 512 响应代码是什么

    当我在 python 中使用 os system ping 服务器时 我得到多个响应代码 使用的命令 os system ping q c 30 s SERVERANME 0 在线 256 离线 512 512 是什么意思 Per the
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • 如何绘制多类分类器的精度和召回率?

    我正在使用 scikit learn 我想绘制精度和召回曲线 我正在使用的分类器是RandomForestClassifier scikit learn 文档中的所有资源都使用二元分类 另外 我可以绘制多类的 ROC 曲线吗 另外 我只找到
  • PyCharm - 如何挂起所有线程

    我们使用 PyCharm 5 0 1 进行多线程调试 当它在断点处停止时 只有特定线程停止 而所有其他线程继续 这使得 冻结时刻 和检查参数值以及其他线程的当前状态变得困难 当其中一个线程在断点处停止时 是否可以挂起所有线程 这在最新的 P
  • 在python中安装scipy模块时出错

    我正在尝试使用 pip 在 python 中安装 scipy 模块 它显示以下错误 Command c users sony appdata local programs python python35 32 python exe u c
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • Qcut Pandas:ValueError:Bin 边缘必须是唯一的

    我使用 Pandas 中的 Qcut 将数据离散化为大小相等的存储桶 我想要有价格桶 这是我的数据框 productId sell prix categ popularity 11997 16758760 0 28 75 50 524137
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core
  • Scrapy的redirect_urls异常.KeyError

    我是 Scrapy 和 Python 的新手 最近推出了我的第一个蜘蛛 有一个功能似乎以前有效 但现在它只适用于我试图废弃的一些网站 代码行是 item url direct response request meta redirect u
  • 如何限制scrapy请求对象?

    所以我有一个蜘蛛 我认为它正在泄漏内存 结果当我检查 telnet 控制台 gt gt gt prefs 时 它只是从链接丰富的页面中抓取了太多链接 有时它会超过 100 000 个 现在我已经一遍又一遍地浏览文档和谷歌 但我找不到一种方法
  • 部署 Flask 应用程序时如何检测额外文件的更改并重新加载应用程序? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在 Flask 中构建了一个小型 Web 应用程序 并尝试将其部署在 Pythonanywhere 上 在开发过程中

随机推荐

  • 从 jersey 迁移到 spring-mvc/rest:ContainerRequestFilter、ContainerResponseFilter

    由于业务需求 我需要从 jersey 迁移到 spring mvc rest 我正在 spring mvc 中搜索相当于 jersey 的东西ContainerRequestFilter ContainerResponseFilter 有任
  • 访问 Oracle Forms/OC4J 中的 URL 参数

    如何访问通过 URL 传递到 Oracle 表单的参数 例如给定网址 a form p1 某事 p2 其他 这将使用 cust 配置启动 a form 表单 但我无法了解如何 或者即使可能 访问p1 值为 something p2 值为 e
  • 如何在数据表中添加图像?

    如何在数据表中添加图像 我尝试了以下代码 Image img new Image img ImageUrl images xx png dr dt NewRow dr column imgdw 但它显示文字System Web UI Web
  • Python Rijndael 加密

    我正在尝试模仿 Rijndael AES 加密http www hanewin net encrypt aes aes test htm http www hanewin net encrypt aes aes test htm在Pytho
  • 会话锁定导致 ASP.Net 网站速度缓慢

    我刚刚发现 ASP Net Web 应用程序中的每个请求都会在请求开始时获取会话锁 然后在请求结束时释放它 如果您像我一开始一样不明白这其中的含义 那么这基本上意味着以下内容 任何时候 ASP Net 网页需要很长时间才能加载 可能是由于数
  • Play Framework 2.0.1 DateFormatter 接收系统区域设置

    我在 Play 2 0 Java 中编写了一个自定义 DateFormatter 因为默认的 DateFormatter 似乎是 i18n 不支持的 实现细节与此处无关 public class DateFormatter extends
  • C# 中用于语音认证的互相关和 FFT

    这是与其他问题类似的问题 但不是重复的问题 但是 我仍然无法得到正确的结果 我基本上试图记录两个 Wav 文件 1 基本文件 2 临时文件 然后将其转换为字节并传递给 Aforge FFT 然后传递给相关性 很少有混乱 当我录制文件时 我使
  • 从 TypeScript 声明全局命名空间变量

    如何从打字稿中显式声明全局命名空间中的变量 我需要编译器生成以下 JavaScript 代码 MyExtension someFunction 不幸的是 我只能让它生成 var MyExtension someFunction 这涉及到最新
  • C 中对“main”的未定义引用

    您好 我在使用 gcc 编译 c 代码时遇到以下错误 usr lib gcc x86 64 redhat linux 4 4 6 lib64 crt1 o In function start text 0x20 undefined refe
  • MS SQL 异常:“@P0”附近的语法不正确

    我正在使用 MS SQL 查询数据库 由于某种原因 我收到以下错误 com microsoft sqlserver jdbc SQLServerException Incorrect syntax near P0 即使这个 P0 不在我的语
  • 将数据插入文本文件

    我想在文本文件中的某些位置插入数据 而不实际覆盖现有数据 我有两个文本文件 one txt 文件有 1000 行 two txt 文件有 10000 行 我想读取 one txt 文件内容并插入 two txt 文件内容的前1000行 将
  • 合并 2 个对象数组

    让我们看一个例子 var arr1 new Array name lang value English name age value 18 var arr2 new Array name childs value 5 name lang v
  • vue-template-compiler/package.json 每个新项目都缺少模块

    目前 我从linux切换到windows 开始创建编程环境 我不记得linux上有类似的问题 但重点是 1 安装的 Node js2 npm install g vue cli用于 CLI 安装3 vue create my app 4 n
  • JFileChooser - 多个文件过滤器?

    我对 Swing 中的 JFileChooser 有疑问 我试图在下拉框中获取多个文件扩展名 但不知道该怎么做 有方法 extFilter FileNameExtensionFilter description extensions 然后我
  • 可移植类库不支持System.IO,为什么?

    我创建了一个便携式类库用于我的Monodroid项目 但问题是我需要系统IO库 但不幸的是我无法添加它 我什至尝试通过 添加引用 选项来添加它 但这是徒劳的 为什么会发生这样的事 我该怎么做 你不能使用System IO因为它不是一个可移植
  • 在服务层或存储库层管理事务?

    我有一个特定的场景 其中基于某些约束在多个表上完成插入和更新 因此很自然地在这些场景中使用事务范围 现在 我有一个存储库层和一个服务层 服务层调解存储库和 UI 并且始终处于无知状态 现在我很困惑在服务层或存储库层中的何处使用事务 我没有使
  • Facebook Sdk 尚未初始化 FacebookSdk.sdkInitialize()

    嘿 我知道以前有人问过这个问题 但似乎没有一个解决方案有帮助 我在我的应用程序中第一次使用 Facebook SDK 我尝试过的 我已经尝试过大部分在Internet但没有得到任何关于此事的信息 这是我的 MainActivity java
  • Qt 为什么不使用异常处理?

    我一直想知道 由于 Qt 以一种美妙且创新的方式使用了标准中的几乎所有 C 功能 并且每当它不使用特定功能时 它都有一个完全有效且适用的理由不这样做 在这种情况下 为什么没有 Qt 类使用throw关键字和throw有什么例外吗 他们从不要
  • C++ 中的向量下标超出范围错误

    我正在尝试编写一个程序 它接受 n 个整数的输入 并找出给定输入中出现次数最多的那个 我正在尝试为 t 种情况运行该程序 为此 我实现了一种类似计数排序的算法 可能有点天真 它计算输入中每 个数字出现的次数 如果有多个数字具有相同的最大出现
  • AttributeError:“list”对象在 App Engine 中没有属性“has_key”

    我在应用程序引擎的批量加载器方面遇到一些问题 下面我插入了bulkloader yaml hs transformers py 和错误日志 知道是什么产生了这个错误吗 我的hs transformer如果我返回单个实体 只是一个实体 而不是