zoukankan      html  css  js  c++  java
  • KBEngine.executeRawDatabaseCommand使用

    先贴一段官方的API介绍:

     

    def executeRawDatabaseCommand( command, callback, threadID, dbInterfaceName ):

    功能说明:

    这个脚本函数在数据库上执行原始数据库命令,该命令将直接由相关数据库进行解析。

    请注意使用该函数修改实体数据可能不生效,因为如果实体已经检出,被修改过的实体数据将仍会被实体存档而导致覆盖。
    强烈不推荐这个函数用于读取或修改实体数据。

    参数:

    command 这个数据库命令将会因为不同数据库配置方案而不同。对于方案为MySQL数据库它是一个SQL查询语句。
    callback

    可选参数,带有命令执行结果的回调对象(比如说是一个函数)。这个回调带有4个参数:结果集合,影响的行数,自増长值,错误信息。
    声明样例:
    def sqlcallback(result, rows, insertid, error):
        print(result, rows, insertid, error)

    如同上面的例子所示,result参数对应的就是“结果集合”,这个结果集合参数是一个行列表。 每一行是一个包含字段值的字符串列表。
    命令执行没有返回结果集合(比如说是DELETE命令), 或者 命令执行有错误时这个结果集合为None。

    rows参数则是“影响的行数”,它是一个整数,表示命令执行受影响的行数。这个参数只和不返回结果结合的命令(如DELETE)相关。
    如果有结果集合返回或者命令执行有错误时这个参数为None。

    insertid对应的是“自増长值”,类似于实体的databaseID,当成功的向一张带有自増长类型字段的表中插入数据时,它返回该数据在插入时自増长字段所被赋于的值。
    更多的信息可以参阅mysql的mysql_insert_id()方法。另外,此参数仅在数据库类型为mysql时有意义。

    error则对应了“错误信息”,当命令执行有错误时,这个参数是一个描述错误的字符串。命令执行没有发生错误时这个参数为None。

    threadID int32,可选参数,指定一个线程来处理本条命令。用户可以通过这个参数控制某一类命令的执行先后顺序(dbmgr是多线程处理的),默认是不指定,如果threadID是实体的ID,
    那么将加入到该实体的存档队列中由线程逐条写入。
    dbInterfaceName string,可选参数,指定由某个数据库接口来完成, 默认使用"default"接口。数据库接口由kbengine_defs.xml->dbmgr->databaseInterfaces中定义。

    其中有几个值得注意的地方:

      command参数:SQL查询语句,but不支持连续sql语句,不支持事务机制,不支持存储过程,不支持获取自增id(请使用回调中的insertid(注意这个参数的类型是NoneType))

      callback:回调函数,注意闭包就行;error错误信息最好自己去处理一下

      

      

  • 相关阅读:
    记录一次namespace 处于Terminating状态的处理方法
    Python的递归函数
    Rancher安装
    常用的正则
    Maven生命周期
    长春理工大学第十四届程序设计竞赛(重现赛)F
    长春理工大学第十四届程序设计竞赛(重现赛)B
    牛客假日团队赛1 B
    Codeforces Round #564 (Div. 2)B
    Codeforces Round #564 (Div. 2)A
  • 原文地址:https://www.cnblogs.com/kefeiGame/p/8662819.html
Copyright © 2011-2022 走看看