Hi Ostico,

I faced a similar issue today and it worked when I changed my 
defaultEncoding to utf-8 and omitted the encode function from the code. But 
later I observed PyOrient latest version has all the right changes in it.

I think the pip repository is not updated. It would be great if it can be 
updated. 

Thanks for a great tool to work with. It makes working with Orient a charm. 

Thanks,
Neeraj

On Saturday, November 29, 2014 5:41:15 AM UTC-8, Ostico wrote:
>
> Hi LIU,
>
> i think you have an old version of driver, i run these tests and it works 
> fine. Maybe the PIP repository is not updated.
> I suggest you to update your driver to the last version from 
> https://github.com/mogui/pyorient
>
> def test_sql_batch_2(self):
>
>  cluster_id = self.client.command("create class fb extends V")
>  cluster_id = self.client.command("create class response extends V")
>  cluster_id = self.client.command("create class followed_by extends E")
>
>  cluster_id = self.client.batch( (
>  "begin;"
>  "let a = create vertex fb set name = 'd1';"
>  "let b = create vertex response set name = 'a1';"
>  "create edge followed_by from $a to $b;"
>  "commit;"
>  ) )
>
> def test_sql_batch_3(self):
>
>  cluster_id = self.client.command("create class fb extends V")
>  cluster_id = self.client.command("create class response extends V")
>  cluster_id = self.client.command("create class followed_by extends E")
>
>  cmd = (
>  "begin;"
>  "let a = create vertex fb set name = 'd1';"
>  "let c = select from fb limit 1;"
>  "let d = select from response limit 1;"
>  "let e = create edge from $c to $d;"
>  "commit;"
>  )
>
>  cluster_id = self.client.batch(cmd)
>
>
>
> Il giorno sabato 29 novembre 2014 09:38:26 UTC+1, Xiaobing LIU ha scritto:
>>
>> Hi all,
>> When I use batch() function of pyorient, I encounter a very strange 
>> problem.
>> I did it following such steps:
>>
>> *1. create and open db using pyorient;*
>> *2. create class and edge; *
>> *3. using batch() function for test*
>>
>> core codes is like this:
>> *cluster_id = client.command("create class fb extends V")*
>> *cluster_id = client.command("create class response extends V")*
>> *cluster_id = client.command("create class followed_by extends E")*
>> *cluster_id = client.batch("begin;create vertex fb set name = 'd1';create 
>> vertex response set name = 'a1';create edge followed_by from fb to 
>> response;commit;")*
>>
>> the last line of the code will report such an error:
>> *  File "loaddata_to_orientdb.py", line 62, in <module>*
>> *    cluster_id = client.batch("begin;create vertex fb set name = 
>> 'd1';create vertex response set name = 'a1';create edge followed_by from fb 
>> to response;commit;")*
>> *  File 
>> "/root/workplace/orientdb/env/lib/python2.7/site-packages/pyorient/orient.py",
>>  
>> line 208, in batch*
>> *    .prepare(( QUERY_SCRIPT, ) + args).send().fetch_response()*
>> *  File 
>> "/root/workplace/orientdb/env/lib/python2.7/site-packages/pyorient/utils.py",
>>  
>> line 47, in wrap_function*
>> *    return wrap(*args, **kwargs)*
>> *  File 
>> "/root/workplace/orientdb/env/lib/python2.7/site-packages/pyorient/utils.py",
>>  
>> line 60, in wrap_function*
>> *    return wrap(*args, **kwargs)*
>> *  File 
>> "/root/workplace/orientdb/env/lib/python2.7/site-packages/pyorient/messages/commands.py",
>>  
>> line 131, in prepare*
>> *    return super( CommandMessage, self ).prepare()*
>> *  File 
>> "/root/workplace/orientdb/env/lib/python2.7/site-packages/pyorient/messages/base.py",
>>  
>> line 72, in prepare*
>> *    self._encode_field( x ) for x in self._fields_definition*
>> *  File 
>> "/root/workplace/orientdb/env/lib/python2.7/site-packages/pyorient/messages/base.py",
>>  
>> line 72, in <genexpr>*
>> *    self._encode_field( x ) for x in self._fields_definition*
>> *  File 
>> "/root/workplace/orientdb/env/lib/python2.7/site-packages/pyorient/messages/base.py",
>>  
>> line 200, in _encode_field*
>> *    buf = v.encode('utf-8')*
>> *UnicodeDecodeError: 'utf8' codec can't decode byte 0x81 in position 77: 
>> invalid start byte*
>>
>> It sounds like the utf8 code problem, but I have already added such lines 
>> in the start of my program:
>> *# -*- coding: utf-8 -*-*
>> *import sys*
>> *import pyorient*
>> *reload(sys)*
>> *sys.setdefaultencoding('utf-8')*
>>
>> The more strange is that when i use the clause
>> *cluster_id = client.batch("begin;create vertex fb set name = 'd1';create 
>> vertex response set name = 'a1';commit;")*
>> instead of 
>> *cluster_id = client.batch("begin;create vertex fb set name = 'd1';create 
>> vertex response set name = 'a1';create edge followed_by from fb to 
>> response;commit;")*
>> Then the error disappeared and the records were created successfully. Is 
>> this an bug of pyorient?
>>
>> The following codes exist the same problem:
>> *cmd = "begin;" + \*
>> *          "let a = create vertex fb set name = 'd1';" + \*
>> *          "let c = select from fb limit 1;" + \*
>> *          "let d = select from response limit 1;" + \*
>> *          "let e = create edge from $c to $d;" + \*
>> *          "commit;"*
>> *cluster_id = client.batch(cmd)*
>>
>> If I delete this line:*          "let a = create vertex fb set name = 
>> 'd1';" + \* , it works well.
>>
>> Could anybody give me a hand, thanks in advance!
>>
>> The release information:
>> orientdb-community-1.7.10
>> pyorient-1.1.1
>> CentOS6.5
>> Oracle java version "1.7.0_71"
>>
>> Regards!
>>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to