VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

Menu

执行SQL语句并处理结果

向数据库发出执行SQL的请求时,需要使用cursor发出查询,服务端执行完成后将返回执行结果。

执行查询

直接执行

调用conn.cursor()函数获取句柄,调用cursor.execute函数执行查询

with conn.cursor() as curs:
    curs.execute(“create table test(id int,data text)”)
# the cursor is now closed

预编译方式执行

调用cursor.execute(),使用占位符表示SQL中的变量,再变量值传入。

cur.execute("SELECT * FROM test WHERE id = %s", (3,))
cur.fetchone()

使用游标获取结果

可以通过以下几种方式获取结果:

方法一: 遍历游标

该方法将顺序遍历获取结果集中所有结果。

cur.execute("SELECT * FROM test WHERE id = %s", (3,))
for record in cur:
    //do_something...

方法二: cur.fetchone()

该方法将获取结果集中下1行结果,如果结果集中没有后续数据,则返回空。

cur.execute("SELECT * FROM test WHERE id = %s", (3,))
record = cur.fetchone()
//do_something...

方法三: cur.fetchmany([size=fetchsize])

该方法将获取结果集中后续fetchsize行结果,如果不足则返回剩下的所有行,如果结果集中没有后续数据,则返回空。当结果集数量庞大时,建议指定fetchsize分批获取。

cur.execute("SELECT * FROM test WHERE id = %s", (3,))
records = cur.fetchmany(10)
for record in records:
//do_something...

方法四: cur.fetchall()

该方法将一次获取结果集中所有结果。

cur.execute("SELECT * FROM test WHERE id = %s", (3,))
records = cur.fetchall()
for record in records:
//do_something...

执行更新

要更改数据(执行一个insert,update或者delete),可以使用cur.execute函数执行完整的SQL,也可以使用预编译的方式绑定参数后再执行。下面的示例将以预编译的方式执行。

删除

cur.execute("delete FROM test WHERE id = %s", (3,))

更新

cur.execute("update  test  set data = %s where id = %s", ('bar',42))

插入

cur.execute("INSERT INTO test (id, data) VALUES (%s, %s)", (42, 'bar'))

创建或修改数据库对象

要创建、更改或者删除一个类似表或者视图这样的数据库对象, 可以调用cursor.execute() 方法.

例如创建表:

cur.execute("create table tb_test(c1 int,c2 int)")
cur.execute("create view v_tb_test as select * from tb_test")