0

尝试导入 TextProperty,类似于另一个 Stack Overflow 问题 (http://stackoverflow.com/questions/3434090/app-engine-badvalueerror-on-bulk-data-upload-textproperty-being-contrued-as-s)

添加 import_transform: db.Text 后,我​​仍然收到错误消息。story_html 是一个 TextProperty()

BadValueError: Property story_html is 3132 bytes long; it must be 500 or less. Consider Text instead, which can store strings of any length.

我的 Bulkloader.yaml 文件。

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

transformers:
- kind: Story   connector: csv   connector_options:
    encoding: utf-8
    columns: from_header   property_map:
    - property: publication
      external_name: publication

    - property: title
      external_name: title

    - property: author
      external_name: author

    - property: date
      external_name: date

    - property: url
      external_name: url
      import_transform: db.Link

    - property: story_html
      external_name: story_html

    - property: story_text
      external_name: story_text

    - property: link_text
      external_name: link_text

    - property: story_text_word
      external_name: story_text_word

    - property: story_text_frequency
      external_name: story_text_frequency

    - property: link_text_word
      external_name: link_text_word

    - property: link_text_frequency
      external_name: link_text_frequency

    - property: tags
      external_name: tags

    - property: companies
      external_name: companies

    - property: companies_links
      external_name: companies_links

我的 Models.py 文件

from google.appengine.ext import db

class Story(db.Model):
    publication = db.StringProperty()
    title = db.StringProperty()
    author = db.StringProperty()
    date = db.DateProperty()
    url = db.LinkProperty()
    story_html = db.TextProperty()

    # Processed Attributes
    story_text = db.TextProperty()
    link_text = db.TextProperty()

    # Word Frequency
    story_text_word = db.ListProperty(unicode)
    story_text_frequency = db.ListProperty(int)

    link_text_word = db.ListProperty(unicode)
    link_text_frequency = db.ListProperty(int)

    tags = db.ListProperty(unicode)
    companies = db.ListProperty(unicode)
    companies_links = db.ListProperty(unicode)

还有我的 loaders.py 文件

 import datetime from google.appengine.ext import db 
 from google.appengine.tools import bulkloader 
 import re

 import models

 class StoryLoader(bulkloader.Loader):
     def __init__(self):
         bulkloader.Loader.__init__(self, 'Story',
                                    [('publication', lambda x: x.decode('utf-8')),
                                    ('title', lambda x: x.decode('utf-8')),
                                    ('author', lambda x: x.decode('utf-8')),
                                    ('date', lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date()),
                                    ('url', str),
                                    ('story_html', lambda x: db.Text(x.decode('utf-8'))),
                                    ('story_text', lambda x: db.Text(x.decode('utf-8'))),
                                    ('link_text', lambda x: db.Text(x.decode('utf-8')))

                                    ('story_text_word', lambda x: x.split('|')),
                                    ('story_text_frequency', lambda x: list(eval(x))),

                                    ('link_text_word', lambda x: x.split('|')),
                                    ('link_text_frequency', lambda x: x.split('|')),
                                    ('tags', lambda x: x.split('|')),
                                    ('companies', lambda x: x.split('|')),
                                    ('companies_links', lambda x: x.split('|'))])

 loaders = [StoryLoader]
4

1 回答 1

1

你说你已经设置了import_transform,但是story_html属性上没有设置转换。您需要为每个属性设置它。

于 2011-10-17T05:49:37.003 回答