Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 批插入异常_Python_Orientdb - Fatal编程技术网

Python 批插入异常

Python 批插入异常,python,orientdb,Python,Orientdb,实际上,我正在尝试将sql批处理插入与pyorient一起使用 实际上,我在边缘上有唯一的索引(in,out),以防止重复,因为我没有找到一种方法来向上插入边缘 session_orientdb.command("CREATE INDEX indexRegroupe ON Regroupe (out, in) UNIQUE") 如果我每100行发送一次命令,并且如果一行因为orientdb发现duplicateIndex(in,out)而抛出一个期望值,那么整个100行都不是insert 这是

实际上,我正在尝试将sql批处理插入与pyorient一起使用

实际上,我在边缘上有唯一的索引(in,out),以防止重复,因为我没有找到一种方法来向上插入边缘

session_orientdb.command("CREATE INDEX indexRegroupe ON Regroupe (out, in) UNIQUE")
如果我每100行发送一次命令,并且如果一行因为orientdb发现duplicateIndex(in,out)而抛出一个期望值,那么整个100行都不是insert

这是我的循环:

 i = 0
 cmd = "BEGIN;"
 # Loop untill receiving the "poison pill" item (meaning : no more element to read)
 poison_pill = False
 while not(poison_pill):
     queries = p_queue.get()
     # Manage poison pill
     if queries is None:
         poison_pill = True
         p_queue.task_done()
         cmd += "commit;"
         session_orientdb.batch(cmd)
     else:
         for query in queries:
             i += 1
             cmd += query + ";"
     if (i > 100):
         i = 0
         cmd += "COMMIT retry 20;"
         try:
             session_orientdb.batch(cmd)
         except Exception as e:
             print (e)
             cmd = "BEGIN;"
查询类似于:

[
'UPDATE Expression SET libelle = "internat fille" UPSERT WHERE libelle = "internat fille";',
'CREATE EDGE Regroupe FROM (SELECT FROM Ontologie WHERE id = "40") to (SELECT FROM Expression WHERE libelle = "internat fille") set score=8;',
'UPDATE Cri SET id = "INTERNAT", libelle = "internat" UPSERT WHERE id = "INTERNAT";',
'CREATE EDGE Identifie FROM (SELECT FROM Expression WHERE libelle = "internat fille") to (SELECT FROM Cri WHERE id = "INTERNAT");'
]

我能做什么?

你应该使用这个条件

范例

begin
let a= select from Regroupe where out=#9:0 and in=#10:0
if($a.size()>0){
    // edge exists so do other query
}
return $a

希望有帮助。

您使用的是什么版本?你能分享代码吗?我正在使用pyorient/orientdb的最新版本,我正在为代码编辑我的帖子编辑:我添加了代码!