序列数据
SmartEDB Python 包装器通过允许对 SmartEDB 序列执行操作来扩展 SQL 数据库 API 规范。序列可能出现在 SELECT 语句的结果中,或者作为 INSERT 或 UPDATE 语句中的参数。
例如,以下语句可以发送到 SQL 引擎:
>>> cursor.execute("SELECT stamp, low, high FROM Quote WHERE symbol = ?", ('AAA',))
此查询的结果将是:
>>> row = cursor.fetchone()
>>> print "Row is:", row
Row is: (<exdb.SequenceIterator object at 0x1008f6610>,
<exdb.SequenceIterator object at 0x1008f7610>,
<exdb.SequenceIterator object at 0x1008f8610>)
请注意,生成的行包含作为行值的 SequenceIterator 对象。可以将常规的迭代器方法应用于此迭代器。请注意,除非是查询结果,否则返回的迭代器将是“未实例化”的。
若要将数据插入到序列中,请使用 array.array 作为值,将数据作为参数传递到 SQL 语句中。例如:
>>>cursor.execute('INSERT INTO Quote(symbol, stamp, open, close,
high, low, volume)
VALUES (?,?,?,?,?,?,?)',
('AAA', array.array('I', timestamps),
array.array('f', opens),
array.array('f', closes),
array.array('f', highs),
array.array('f', lows),
array.array('I', volumes)))
请注意,array.array
是严格类型的,因此其类型必须与序列列的类型匹配。如果不匹配,结果的行为将不可预测。