返回首页

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

更新日期:2024年09月11日

该方法用来执行单条或多条DML/DDL 语句,
如果为多条语句则返回迭代器。

样例代码:
code 1
from GBaseConnector import connect
config = {'host' : '172.16.3.10',
'port' : 5258,
'user' : 'gbase',
'password' : 'gbase20110531',
'database' : 'test'}
conn = connect(**config)
cur = conn.cursor()
operation = "SELECT 1; INSERT INTO test VALUES(1,'a'); SELECT 2"
GBaseConnection
对象。
函数名称
返回值 返回值类型
函数参数
参数含义
execute
多语句
迭代器
iterator
1.operation(string)
2.params(tuple)
3.multi_stmt(bool)
1.要执行的SQL
语句
2.SQL 语句参数
3.是否为多条
SQL 语句



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

- 27 -
for result in cur.execute(operation,multi_stmt=True):
if result.has_rows:
print result.fetchall()
else:
print 'no result set'
conn.close()

code 2
from GBaseConnector import connect
config = {'host' : '172.16.3.10',
'port' : 5258,
'user' : 'gbase',
'password' : 'gbase20110531',
'database' : 'test'}
conn = connect(**config)
cur = conn.cursor()
operation = "INSERT INTO test VALUES(%s,%s)"
cur.execute(operation,(1,'a'))
conn.close()

下面几个部分显示多个客户机/服务器连接的正确的 sqlhosts 条目。可以假定已正确准备
了网络配置文件 hosts 和 services(即使没有明确提到这些文件)。包括以下示例:
• 使用网络连接

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 60 -
• 使用多种连接类型
• 访问多个数据库服务器
共享内存和本地回送连接的示例可以在共享内存和本地回送连接的说明中找到。

网络连接
下图显示的配置中,客户机应用程序位于主机 river 上,而数据库服务器位于主机 valley
上。
图: 网络客户机/服务器配置示例



在这两台计算机上定义了 valley_ds 数据库服务器的 sqlhosts 条目。
两个计算机在同一个 TCP/IP 网络上,但是主机 river 对于其网络编程接口使用套接字,
而主机 valley 对于其网络编程接口使用 TLI。nettype 字段必须反映 sqlhosts 所在计算
机使用的网络编程接口类型。在此示例中,主机 river 上 valley_ds 数据库服务器的
nettype 字段是 onsoctcp,而主机 valley 上 valley_ds 数据库服务器的 nettype 字段是
ontlitcp。

多种连接类型
数据库服务器的单个实例可以提供多种类型的连接。下图说明了此类配置。数据库服务器
位于主机 river 上。由于共享内存速度快,所以客户机 A 通过共享内存连接连接到数据
库服务器。客户机 B 必须使用网络连接,因为客户机和服务器在不同的计算机上。
当您希望数据库服务器接受多种类型的连接时,您必须进行下列操作:
• 在 onconfig 文件中添加 DBSERVERNAME 和 DBSERVERALIASES 条目。
• 针对每个数据库服务器/连接类型对,添加 sqlhosts 条目。
对于下图中的配置,数据库服务器有两个数据库服务器名称:river_net 和 river_shm。
onconfig 文件包含以下条目:

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 61 -
DBSERVERNAME river_net
DBSERVERALIASES river_shm
图: 使用多种连接类型的 UNIX™ 客户机/服务器配置的示例


客户机应用程序使用的数据库服务器名称可用于确定使用的连接类型。客户机 A 使用以
下语句连接到数据库服务器:
CONNECT TO '@river_shm'
在 sqlhosts 文件中,与名称 river_shm 关联的 nettype 指定共享内存连接,因此该连
接是共享内存连接。
客户机 B 可使用以下语句连接到数据库服务器:
CONNECT TO '@river_net'
在 sqlhosts 文件中,与 river_net 相关联的 nettype 值指定网络 (TCP/IP) 连接,因
此客户机 B 使用网络连接。

访问多个数据库服务器
下图显示了主机 river 上两个数据库服务器的配置。当一台计算机上有多个数据库服务
器处于活动状态时,称为多处驻留。
图: UNIX™ 上的多个数据库服务器


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 62 -

对于前面示例中的配置,您必须准备两个 onconfig 文件,一个用于数据库服务器 A,另
一个用于数据库服务器 B。sqlhosts 文件包含这两个数据库服务器的连接信息。
数据库服务器 A 的 onconfig 文件包含以下行:
DBSERVERNAME riverA_shm
数据库服务器 B 的 onconfig 文件包含以下行:
DBSERVERNAME riverB_soc

PG_RANGE 系统表存储关于范围类型的信息。除了PG_TYPE 里类型的记录。
名称
类型
引用
描述
rngtypid
oid
PG_TYPE.oid
范围类型的OID。
rngsubtype
oid
PG_TYPE.oid
这个范围类型的元素类型(子类型)
的OID。
rngcollation
oid
PG_COLLATION.oid
用于范围比较的排序规则的OID,
如果没有则为零。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
805
名称
类型
引用
描述
rngsubopc
oid
PG_OPCLASS.oid
用于范围比较的子类型的操作符类
的OID。
rngcanonical
regproc
PG_PROC.proname
转换范围类型为规范格式的函数
名,如果没有则为0。
rngsubdiff
regproc
PG_PROC.proname
返回两个double precision 元素值的
不同的函数名,如果没有则为0。
rngsubopc(如果元素类型是可排序的,则加上rngcollation)决定用于范围类型的排序
顺序。当元素类型是离散的时使用rngcanonical。