hey Drew Can you show an example on how to use your lazyboy with a simple column family or super columny familythat would be really great thanks a lot
On Mon, Aug 24, 2009 at 3:15 PM, Drew Schleck <[email protected]>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<[email protected]> wrote: > > The Ruby client works fine. ;-) > > > > Evan > > > > On Mon, Aug 24, 2009 at 12:00 PM, Jonathan Ellis<[email protected]> > 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<[email protected]> 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<[email protected]> > 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<[email protected]> > 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<[email protected]> > 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<[email protected]> > 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': '[email protected]'} > >>>>>>> True > >>>>>>> Traceback (most recent call last): > >>>>>>> File "columnfamily.py", line 65, in <module> > >>>>>>> u.save() # -> {'username': 'ieure', 'email': ' > [email protected]'} > >>>>>>> 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 <[email protected]> > >>>>>>> # > >>>>>>> # 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': '[email protected]'} > >>>>>>> > >>>>>>> # 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': ' > [email protected]'} > >>>>>>> > >>>>>>> # You can see if it's been modified. > >>>>>>> print u.is_modified() # -> True > >>>>>>> > >>>>>>> # Save to Cassandra > >>>>>>> u.save() # -> {'username': 'ieure', 'email': ' > [email protected]'} > >>>>>>> > >>>>>>> print u.is_modified() # -> False > >>>>>>> > >>>>>>> # Load it in a new instance. > >>>>>>> u_ = User().load(u.pk.key) > >>>>>>> print u_ # -> {'username': 'ieure', 'email': ' > [email protected]'} > >>>>>>> > >>>>>>> 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
