返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

获取下一个结果集
当有多个结果集返回时,可以使用游标的nextset 方法跳过结果集后直接
获取下一个结果集的数据。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test'}
try:
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS test")
cur.execute("CREATE TABLE test (COL1 INT, COL2 VARCHAR(20))")
opfmt = "INSERT INTO test(COL1, COL2) VALUES(%s, %s)"
rows = []
for i in xrange(0, 100):
rows.append((i, "row" + str(i)))
cur.executemany(opfmt, rows)

GBase Python 接口开发手册


- 12 -

南大通用数据技术股份有限公司
cur.execute("SELECT
*
FROM
test
limit
5;SELECT
*
FROM
TEST
LIMIT
10,
5;SELECT
* FROM TEST LIMIT 15, 5", multi_stmt= True)
cur.nextset(2)
print cur.fetchall()

cur.execute("DROP TABLE IF EXISTS test")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()
注意:获取下一个结果集方法nextset 不能在遍历过程中使用,如下面的
例子。
iters
=
cur.execute("SELECT
*
FROM
test
limit
5;SELECT
*
FROM
TEST
LIMIT
10,
5;SELECT
* FROM TEST LIMIT 15, 5", multi_stmt= True)
for ter in iters:
cur.nextset()
print cur.fetchall()

rfmtdec() 函数使用格式化掩码来将 decimal 值转换为字符串。

语法
mint rfmtdec(dec_val, fmtstring, outbuf)
dec_t *dec_val;
char *fmtstring;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 865 -
char *outbuf;
dec_val
指向要格式化的 decimal 值的指针。
fmtstring
指向包含要用于 dec_val 值的格式化掩码的字符缓冲区的指针。
outbuf
指向接收 dec_val 值的格式化的字符串的字符缓冲区的指针。

用法
rfmtdec() 函数的 fmtstring 参数指向数值格式化掩码,其包含描述如何
格式化 decimal 值的字符。

当您使用 rfmtdec() 来格式化 MONEY 值时,该函数使用 DBMONEY 环境变量指
定的货币符号。
如果您未设置此环境变量,
则 rfmtdec() 使用客户机语言环境定义的货币符
号。缺省的语言环境 US English 定义货币符号,就如同您将 DBMONEY 设置为 “$,.”
一样。

当您使用有多字节代码集的非缺省的语言环境时,
rfmtdec() 支持格式字符串中的多字
节字符。
返回代码
0
转换成功。
-1211
程序用尽内存(内存分配错误)。
-1217
格式字符串太大。

示例
demo 目录在文件 rfmtdec.ec 中包含此样例程序。
/*
* rfmtdec.ec *
The following program applies a series of format specifications to each of a series of
DECIMAL numbers and displays each result.
*/

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 866 -

#include

EXEC SQL include decimal;

char *strings[] =
{
"210203.204",
"4894",
"443.334899312",
"-12344455",
0
};

char *formats[] =
{
"**###########",
"$$$$$$$$$$.##",
"(&&,&&&,&&&.)",
"<,<<<,<<<,<<<",
"$*********.**",
0
};

char result[41];

main()
{
mint x;
mint s = 0, f;
dec_t num;

printf("RFMTDEC Sample ESQL Program running.\n\n");

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 867 -

while(strings[s])
{
/*
* Convert each string to DECIMAL
*/
printf("String = %s\n", strings[s]);
if (x = deccvasc(strings[s], strlen(strings[s]), #))
{
printf("Error %d in converting string [%s] to decimal\n",
x, strings[s]);
break;
}
f = 0;
while(formats[f])
{
/*
* Format DECIMAL num for each of formats[f]
*/
rfmtdec(#, formats[f], result);
/*
* Display result and bump to next format (f++)
*/
result[40] = '\0';
printf(" Format String = '%s'\t", formats[f++]);
printf("\tResult = '%s'\n", result);
}
++s; /* bump to next string */
printf("\n"); /* separate result groups */
}

printf("\nRFMTDEC Sample Program over.\n\n");
}

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 868 -

输出
RFMTDEC Sample ESQL Program running.

String = 210203.204
Format String = '**###########'
Result = '** 210203'
Format String = '$$$$$$$$$$.##'
Result = ' $210203.20'
Format String = '(&&,&&&,&&&.)'
Result = ' 000210,203. '
Format String = '<,<<<,<<<,<<<'
Result = '210,203'
Format String = ' $*********.**'
Result = '$***210203.20'

String = 4894
Format String = '**###########'
Result = ' ** 4894'
Format String = '$$$$$$$$$$.##'
Result = ' $4894.00'
Format String = '(&&,&&&,&&&.)'
Result = ' 000004,894. '
Format String = '<,<<<,<<<,<<<'
Result = '4,894'
Format String = ' $*********.**'
Result = '$*****4894.00'

String = 443.334899312
Format String = '**###########'
Result = ' ** 443'
Format String = '$$$$$$$$$$.##'
Result = ' $443.33'

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 869 -
Format String = '(&&,&&&,&&&.)'
Result = ' 0000000443. '
Format String = '<,<<<,<<<,<<<'
Result = ' 443'
Format String = ' $*********.**'
Result = '$******443.33'

String = -12344455
Format String = '**###########'
Result = ' ** 12344455'
Format String = '$$$$$$$$$$.##'
Result = ' $12344455.00'
Format String = '(&&,&&&,&&&.)'
Result = '(12,344,455.)'
Format String = '<,<<<,<<<,<<<'
Result = '12,344,455'
Format String = ' $*********.**'
Result = ' $*12344455.00'

RFMTDEC Sample Program over.

传统的AI 任务往往具有多个流程,如数据的收集过程包括数据的采集、数据清洗、数
据存储等,在算法的训练过程中又包括数据的预处理、训练、模型的保存与管理等。其中,
对于模型的训练过程,
又包括超参数的调优过程。
诸如此类机器学习模型生命周期的全过程,
可大量集成于数据库内部。在距离数据存储侧最近处进行模型的训练、管理、优化等流程,
在数据库端提供SQL 语句式的开箱即用的AI 全声明周期管理的功能,称之为全流程AI.
GBase 8c 实现了部分全流程AI 的功能,将在本章节中详细展开。