Not sure where you want bug reports, but I fixed a little something:
Basically, I couldn't have null/empty reference attributes, I would
get this exception:
Traceback (most recent call last):
File "/Users/ryan/Downloads/google_appengine/google/appengine/tools/
adaptive_thread_pool.py", line 150, in WorkOnItems
status, instruction = item.PerformWork(self.__thread_pool)
File "/Users/ryan/Downloads/google_appengine/google/appengine/tools/
bulkloader.py", line 695, in PerformWork
transfer_time = self._TransferItem(thread_pool)
File "/Users/ryan/Downloads/google_appengine/google/appengine/tools/
bulkloader.py", line 850, in _TransferItem
self.content = self.request_manager.EncodeContent(self.rows)
File "/Users/ryan/Downloads/google_appengine/google/appengine/tools/
bulkloader.py", line 1271, in EncodeContent
entity = loader.create_entity(values, key_name=key, parent=parent)
File "/Users/ryan/Downloads/google_appengine/google/appengine/ext/
bulkload/bulkloader_config.py", line 383, in create_entity
return self.dict_to_entity(input_dict, self.bulkload_state)
File "/Users/ryan/Downloads/google_appengine/google/appengine/ext/
bulkload/bulkloader_config.py", line 129, in dict_to_entity
self.__run_import_transforms(input_dict, instance, bulkload_state)
File "/Users/ryan/Downloads/google_appengine/google/appengine/ext/
bulkload/bulkloader_config.py", line 231, in __run_import_transforms
value = self.__dict_to_prop(transform, input_dict, bulkload_state)
File "/Users/ryan/Downloads/google_appengine/google/appengine/ext/
bulkload/bulkloader_config.py", line 186, in __dict_to_prop
value = transform.import_transform(value)
File "/Users/ryan/Downloads/google_appengine/google/appengine/ext/
bulkload/bulkloader_parser.py", line 90, in __call__
return self.method(*args, **kwargs)
File "/Users/ryan/Downloads/google_appengine/google/appengine/ext/
bulkload/transform.py", line 141, in generate_foreign_key_lambda
return datastore.Key.from_path(kind, value)
File "/Users/ryan/Downloads/google_appengine/google/appengine/api/
datastore_types.py", line 382, in from_path
ValidateString(id_or_name, 'name')
File "/Users/ryan/Downloads/google_appengine/google/appengine/api/
datastore_types.py", line 107, in ValidateString
raise exception('%s must not be empty.' % name)
BadValueError: name must not be empty.
The fix is pretty simple (in ext/bulkload/transform.py):
def generate_foreign_key_lambda(value):
if key_is_id:
value = int(value)
if not value: # ADDED
return None # ADDED
return datastore.Key.from_path(kind, value)
return generate_foreign_key_lambda
Other than that, working great for me.
Thanks,
Ryan
On May 4, 3:42 pm, Craig Berry <
cdbe...@gmail.com> wrote:
> I did that check, and got prompted to log in. But the script dies
> without ever having prompted me.
>
>
>
>
>
> On Tue, May 4, 2010 at 14:34, Matthew Blain <
matthew.bl...@google.com> wrote:
> > You should get prompted for authentication. Make sure remote_api is
> > installed correctly on your server by visiting whatever you used for
> > the --url argument in your browser. It should require you to log in
> > then say "This request did not contain a necessary header"
>
> > --Matthew
>
> > On May 4, 10:51 am, Craig Berry <
cdbe...@gmail.com> wrote:
> >> Anybody there? I could really use a pointer on this. To clarify my
> >> situation:
>
> >> 1. I'm using the Eclipse java plugin to build and deploy my app.
> >> 2. I'm trying to use the previewbulkloadertool to transform and
> >> upload data from an existing db.
> >> 3. I set up the app-side java remote_api servlet as described.
> >> 4. I obtained the zip file, extracted it to a new dir on disk, and ran
> >> the script as described in the doc.
> >> 5. When I do that, I get an authentication failure.
>
> >> This is perhaps not surprising, as I never provided my credentials
> >> anywhere. How and where is that supposed to happen?
>
> >> On May 3, 7:53 pm, Craig Berry <
cdbe...@gmail.com> wrote:
>
> >> > Perhaps this is documented somewhere, but I can't find it. I'm trying
> >> > to upload to a Java app, configured as recommended, if that matters.
> >> > How do I provide authentication information (username and password) to
> >> >bulkloader.py so that it can connect to my remote_api?
>
> >> > On Apr 9, 3:26 pm, Matthew Blain <
matthew.bl...@google.com> wrote:
>
> >> > > I’d like to announce a wider prerelease of the new App Engine
> >> > >Bulkloaderconfiguration format. This new format extends the existing
> >> > >bulkloaderwith a new format with several advantages:
>
> >> > > * Semi-Automatic configuration generation: The SDK can generate a
> >> > >bulkloaderconfiguration based on your existing data.
> >> > > * Supports more data formats. CSV support has been extended to files
> >> > > with headers, basic XML support has been added, and it is simpler to
> >> > > use alternate text encodings in the files. Additional and custom data
> >> > > connectors are now easier to create.
> >> > > * Easier to use -- the new syntax is more declarative and
> >> > > descriptive than the old one. Developers who use languages other than
> >> > > Python no longer need to write code in the Python language, although
> >> > > the Python SDK is still required to run the tool.
>
> >> > > To try out the newbulkloader, please visithttp://
bulkloadersample.appspot.com/
> Craig Berry -
http://lapidum.org/home.html
> "Magicians lie to the universe, and the
> universe believes them." -- Lenore Berry
>
> --
> You received this message because you are subscribed to the Google Groups "Google App Engine" group.
> To post to this group, send email to
google-a...@googlegroups.com.
> To unsubscribe from this group, send email to
google-appengi...@googlegroups.com.