【问题标题】:How does one load data into the local Development Server using Python?如何使用 Python 将数据加载到本地开发服务器中?
【发布时间】:2011-07-23 23:39:09
【问题描述】:

我知道 GAE 帮助网站对此进行了充分的介绍。它不适合我。我对 Python 有点 green。但我也知道进口是如何运作的。实体模块与加载程序位于同一文件夹中。那么 GAE 脚本在做什么呢?

这是我的装载机:

from google.appengine.ext import db
from google.appengine.tools import bulkloader
import entities

class CardLoader(bulkloader.Loader):
    def __init__(self):
        bulkloader.Loader.__init__(self, 'Card',
            [('english', str),
            ('translation', str)
            ])

loaders = [CardLoader]

这是一个名为 entity.py 的文件中的内容

from google.appengine.ext import db

class Card(db.Model):
    english = db.StringProperty(required=True)
    translation = db.StringProperty(required=True)

这是 .csv 中内容的一个片段

"cardId","english","translation"
"3994","face","la cara"
"4027","art","el arte"

我的 Python 版本:

Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

这是我的命令(在 Windows 上):

python "c:\Program Files\Google\google_appengine\appcfg.py" upload_data --config_file=card_loader.py --url http://localhost:8080/remote_api --filename=card_data.csv --kind=Card

这是输出:

Uploading data records.
[INFO    ] Logging to bulkloader-log-20110723.183520
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
Please enter login credentials for localhost:8080
Email: admin
Password for admin:
Traceback (most recent call last):
  File "c:\Program Files\Google\google_appengine\appcfg.py", line 76, in <module
>
    run_file(__file__, globals())
  File "c:\Program Files\Google\google_appengine\appcfg.py", line 72, in run_fil
e
    execfile(script_path, globals_)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
y", line 3708, in <module>
    main(sys.argv)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
y", line 3699, in main
    result = AppCfgApp(argv).Run()
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
y", line 2345, in Run
    self.action(self)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
y", line 3484, in __call__
    return method()
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
y", line 3311, in PerformUpload
    run_fn(args)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
y", line 3202, in RunBulkloader
    sys.exit(bulkloader.Run(arg_dict))
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\bulkload
er.py", line 4369, in Run
    return _PerformBulkload(arg_dict)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\bulkload
er.py", line 4180, in _PerformBulkload
    LoadConfig(config_file)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\bulkload
er.py", line 3844, in LoadConfig
    ('', 'r', imp.PY_SOURCE))
  File "card_loader.py", line 3, in <module>
    import entities
ImportError: No module named entities

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    回溯描述了ImportError:未找到模块entities。那是你的模型所在的地方吗?如果是这样,您必须确保可以找到它(如果需要,请将其目录添加到 sys.path)。

    【讨论】:

    • 其实是在本地路径。 appcfg.py 在 Windows 上的行为是否不同?我试试FQ路径。
    • 我必须这样做: import sys import os _root_dir = os.path.dirname(os.path.realpath(file)) sys.path.insert(0, _root_dir) 导入实体
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2015-07-10
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多