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