返回首页

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

更新日期:2024年09月11日

执行事务
通过设置连接参数中的autocommit=False 参数,即可控制事务,可通过连
接的commit 方法提交事务、rollback 方法回滚事务。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test',
'autocommit':False,}
try:
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("DROP PROCEDURE IF EXISTS test")
cur.execute("CREATE TABLE IF NOT EXISTS test(id INT, val VARCHAR(20))")
cur.execute("INSERT INTO test VALUES(1,'hello')")
conn.rollback()
cur.execute("INSERT INTO test VALUES(2,'world')")
conn.commit()
cur.execute("SELECT * FROM test")
print cur.fetchall()



GBase Python 接口开发手册
南大通用数据技术股份有限公司

- 15 -
cur.execute("DROP TABLE IF EXISTS test")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()
或者使用cur.execute("set autocommit=false")来开启一个事物。
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 PROCEDURE IF EXISTS test")
cur.execute("CREATE TABLE IF NOT EXISTS test(id INT, val VARCHAR(20))")
cur.execute("set autocommit=false")
cur.execute("INSERT INTO test VALUES(1,'hello')")
conn.rollback()
cur.execute("INSERT INTO test VALUES(2,'world')")
conn.commit()
cur.execute("SELECT * FROM test")
print cur.fetchall()
cur.execute("DROP TABLE IF EXISTS test")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()

示例如下:
CREATE OR REPLACE PROCEDURE P_5_6 AS
TYPE nested_type IS TABLE OF VARCHAR2(15); -- 定义嵌套表类型
TYPE varray_type IS VARRAY(50) OF INTEGER;
TYPE associative_array_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
V1 nested_type; --置空
V2 varray_type; --置空
V3 associative_array_type;
BEGIN
--再予以赋值
NULL;
END;

CHARACTER
VARYING 数据类型存储字母、数字和可变长度的符号组成的字符串,其中
m 是列的最大大小(以字节计),而 r 是为该列保留的最小字节数。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 88 -

CHARACTER VARYING 数据类型符合 SQL 的 ANSI/ISO 标准;非 ANSI VARCHAR 数据类
型支持相同的功能。有关更多信息,请参阅 VARCHAR(m,r) 数据类型中对 VARCHAR 类型
的描述。