hey Drew

Can you show an example on how to use your lazyboy with a simple column family or super columny family
that would be really great
thanks a lot

On Mon, Aug 24, 2009 at 3:15 PM, Drew Schleck <drew.schleck@gmail.com> wrote:
I've been working on a Lazyboy 0.4 update at
http://github.com/dschleck/lazyboy/ . Right now it's at the point
where it works for me and what I'm doing but there's probably a few
bugs to be caught. As an example, yesterday I noticed it wasn't
possible to delete items out of supercolumns so I fixed that.

If you decide to use my branch of it and find a bug, please tell me
about it and I'll do my best to sort it out.

Drew

On Mon, Aug 24, 2009 at 12:09, Evan Weaver<eweaver@gmail.com> wrote:
> The Ruby client works fine. ;-)
>
> Evan
>
> On Mon, Aug 24, 2009 at 12:00 PM, Jonathan Ellis<jbellis@gmail.com> wrote:
>> That's probably the best option at the moment.  Once you're familiar
>> with the thrift API I'm sure the lazyboy devs would welcome updates
>> too.
>>
>> -Jonathan
>>
>> On Mon, Aug 24, 2009 at 1:54 PM, Bruno Couto<bcouto@gmail.com> wrote:
>>> Thanks for helpping me Jonathan!
>>>
>>> Well, now I know that I can´t use the Lazyboy, then I will try my
>>> first steps using the Cassandra trunk version and thrift api whitout a
>>> wrapper.
>>>
>>>
>>> On Mon, Aug 24, 2009 at 2:41 PM, Jonathan Ellis<jbellis@gmail.com> wrote:
>>>> lazyboy works vs an earlier version of trunk, so it's already
>>>> incompatible with 0.3, but not yet compatible w/ latest 0.4 :)
>>>>
>>>> On Mon, Aug 24, 2009 at 12:28 PM, Bruno Couto<bcouto@gmail.com> wrote:
>>>>> Jonathan,
>>>>>
>>>>>
>>>>> First, thanks for answering so fast.
>>>>> I´m using version 0.3-final of Cassandra, then I believe the api
>>>>> version 0.4 is not the problem, am I correct?
>>>>> I'll look for the null problem.
>>>>>
>>>>>
>>>>> Bruno Couto
>>>>>
>>>>>
>>>>> On Mon, Aug 24, 2009 at 11:50 AM, Jonathan Ellis<jbellis@gmail.com> wrote:
>>>>>> There's two things going on here, I think.
>>>>>>
>>>>>> One is that you're passing a null where there shouldn't be one.  This
>>>>>> is a thrift bug and will be addressed in the next beta.
>>>>>>
>>>>>> The other is that IIRC lazyboy needs to be updated to work with the
>>>>>> latest 0.4 api.
>>>>>>
>>>>>> -Jonathan
>>>>>>
>>>>>> On Mon, Aug 24, 2009 at 9:09 AM, Bruno Couto<bcouto@gmail.com> wrote:
>>>>>>> Hi Guys,
>>>>>>>
>>>>>>> my name is Bruno and I'm from Brazil, first, sorry for my bad english.
>>>>>>> I'm in my first steps with cassandra, and I´m trying to use Lazyboy
>>>>>>> (python wrapper).
>>>>>>> But when I run the layzyboy columnfamily.py example, I get the
>>>>>>> following error messages.
>>>>>>> Someone with more experience could help me?
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Bruno Couto.
>>>>>>>
>>>>>>>
>>>>>>> ----
>>>>>>>
>>>>>>> Cassandra Error Message:
>>>>>>>
>>>>>>> DEBUG - batch_insert
>>>>>>> ERROR - Internal error processing batch_insert
>>>>>>> java.lang.NullPointerException
>>>>>>>        at org.apache.cassandra.db.RowMutation.getRowMutation(RowMutation.java:284)
>>>>>>>        at org.apache.cassandra.service.CassandraServer.batch_insert(CassandraServer.java:318)
>>>>>>>        at org.apache.cassandra.service.Cassandra$Processor$batch_insert.process(Cassandra.java:968)
>>>>>>>        at org.apache.cassandra.service.Cassandra$Processor.process(Cassandra.java:807)
>>>>>>>        at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:252)
>>>>>>>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>>>>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>>>>        at java.lang.Thread.run(Thread.java:619)
>>>>>>> DEBUG - Disseminating load info ...
>>>>>>>
>>>>>>> ----
>>>>>>>
>>>>>>> Python Error Message:
>>>>>>>
>>>>>>> localhost ~ # python columnfamily.py
>>>>>>> {'table': 'UserData', 'superkey': None, 'key':
>>>>>>> '3a63b82a947d4ee1a8cbee45944b5dcb', 'family': 'Users', 'supercol':
>>>>>>> None}
>>>>>>> {'username': 'ieure', 'email': 'ian@digg.com'}
>>>>>>> True
>>>>>>> Traceback (most recent call last):
>>>>>>>  File "columnfamily.py", line 65, in <module>
>>>>>>>    u.save()           # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>>>>>>  File "/root/columnfamily.py", line 119, in save
>>>>>>>
>>>>>>>  File "build/bdist.linux-i686/egg/lazyboy/connection.py", line 106, in func
>>>>>>> lazyboy.exceptions.ErrorThriftMessage: Internal error processing batch_insert
>>>>>>>
>>>>>>> ----
>>>>>>>
>>>>>>> ColumnFamily.py
>>>>>>>
>>>>>>> # -*- coding: utf-8 -*-
>>>>>>> #
>>>>>>> # Lazyboy examples
>>>>>>> #
>>>>>>> # © 2009 Digg, Inc. All rights reserved.
>>>>>>> # Author: Ian Eure <ian@digg.com>
>>>>>>> #
>>>>>>> # This example assumes the following schema:
>>>>>>> #
>>>>>>> # <Tables>
>>>>>>> #     <Table Name="UserData">
>>>>>>> #         <ColumnFamily ColumnSort="Name" Name="Users"/>
>>>>>>> #     </Table>
>>>>>>> # </Tables>
>>>>>>> #
>>>>>>>
>>>>>>>
>>>>>>> from lazyboy import *
>>>>>>>
>>>>>>>
>>>>>>> # Define your cluster(s)
>>>>>>> connection.add_pool('UserData', ['localhost:9160'])
>>>>>>>
>>>>>>>
>>>>>>> # Subclass ColumnFamily to create an object of the correct type.
>>>>>>> class User(columnfamily.ColumnFamily):
>>>>>>>    """A class representing a user in Cassandra."""
>>>>>>>
>>>>>>>    # _key is the key template. It's values are given to
>>>>>>>    # PrimaryKey.__init__ as keyword arguments any time a PK is
>>>>>>>    # instantiated for this object.
>>>>>>>    _key = {'table': 'UserData',        # The table to store in
>>>>>>>            'family': 'Users'}          # The ColumnFamily name to store on
>>>>>>>
>>>>>>>    # Anything in here _must_ be set before the object is saved
>>>>>>>    _required = ('username',)
>>>>>>>
>>>>>>>
>>>>>>> # Create an empty object
>>>>>>> u = User()
>>>>>>>
>>>>>>> # A PrimaryKey is generated for you:
>>>>>>> print u.pk
>>>>>>> # -> {'table': 'UserData', 'superkey': None,
>>>>>>> #     'key': 'da6c8e19174f40cfa6d0b65a08eef62f',
>>>>>>> #     'family': 'Users', 'supercol': None}
>>>>>>>
>>>>>>> data = {'username': 'ieure', 'email': 'ian@digg.com'}
>>>>>>>
>>>>>>> # The object is a dict. All these are equivalent.
>>>>>>> u.update(data)
>>>>>>> u.update(data.items())
>>>>>>> u.update(**data)
>>>>>>> for k in data:
>>>>>>>    u[k] = data[k]
>>>>>>>
>>>>>>> # Arguments to __init__ are passed to update()
>>>>>>> u = User(data)
>>>>>>> print u            # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>>>>>>
>>>>>>> # You can see if it's been modified.
>>>>>>> print u.is_modified()           # -> True
>>>>>>>
>>>>>>> # Save to Cassandra
>>>>>>> u.save()           # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>>>>>>
>>>>>>> print u.is_modified()           # -> False
>>>>>>>
>>>>>>> # Load it in a new instance.
>>>>>>> u_ = User().load(u.pk.key)
>>>>>>> print u_           # -> {'username': 'ieure', 'email': 'ian@digg.com'}
>>>>>>>
>>>>>>> print u.is_modified()           # -> False
>>>>>>> del u['username']
>>>>>>> print u.valid()                 # -> False
>>>>>>> print u.missing()               # -> ('username',)
>>>>>>> try:
>>>>>>>    u.save()        # -> ('Missing required field(s):', ('username',))
>>>>>>> except Exception, e:
>>>>>>>    print e
>>>>>>>
>>>>>>> # Discard modifications
>>>>>>> u.revert()
>>>>>>> print u.is_modified()           # -> False
>>>>>>> print u.valid()                 # -> True
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
>
>
> --
> Evan Weaver
>



--
Bidegg worlds best auction site
http://bidegg.com