游标
根据 DB API 规范的定义,要执行查询,需先创建一个空游标,然后调用游标的 execute() 方法来执行 SQL 查询。例如:
>>> cursor = conn.cursor()
>>> cursor.execute("SELECT ikey, high, volume FROM Quote WHERE ikey = ?", (5,))
参数通过问号语法发送给 SQL 引擎(如上例所示)。实际的参数值以元组形式发送。如果执行了任何更改,则必须在连接上执行 commit() 或 rollback() 操作;例如:
>>> conn.commit()
当在未打开事务的情况下执行 execute() 操作时,Python 包装器会自动使用默认参数创建一个读写事务。如果不需要这种行为,请使用 connection.startTransaction() 方法手动打开一个事务。
当执行 SQL 语句时,可使用以下方法来检索结果:
cursor.fetchone()
- 从结果中返回单个行作为元组。cursor.fetchall()
- 将整个结果集作为元组列表返回。(注意:如果结果集过大,可能会影响性能)cursor.fetchmany()
- 从结果集中返回 N 行,作为元组的集合。要返回的行数由游标成员 arraysize 设置。(默认值为 100)。
SmartEDB 序列数据类型在查询结果中也得到了支持。若要使用序列,有两种选择:
使用 FLATTENED 关键字。这允许在不同的结果行中转置序列。例如,考虑如下查询:
>>> cursor.execute("SELECT flattened stamp, low, high FROM Quote WHERE symbol = ?", ('AAA',))
返回的结果集将包含多行,例如:
(1,2,3) (2,3,4) etc.
在查询结果中使用序列列。这将返回一个 SequenceIterator 对象实例。此迭代器与大多数迭代器函数兼容,但不包括那些需要实体化序列(即直接绑定到数据库字段的序列)的函数。
有关 Python 中序列数据类型的更多使用详情,请参阅“序列”页面。